如何使用Tee chart 中arrow选项在MFC对话框上绘制动态带有箭头的图形

如何使用Tee chart 中arrow选项在MFC对话框上绘制动态带有箭头的图形,第1张

在网上下载TeeChart控件并安装,安装自然不用多说,安装完后找到安装路径(带有TeeChart5.ocx文件),复制当前路径

2

安装完后需要对控件进行简单的注册,打开cmd,通过cd指令并粘贴原来复制好的路径,转到软件安装好的目录;

接着输入:regsvr32 TeeChart5.ocx,然后d出对话框提示注册成功

注册完毕,打开VS2013,新建一个MFC项目,在VC++栏中找到MFC项目,选择好项目存放的目录并填写项目名称

接着是创建向导,只需修改选择“基于对话框”模式,至于“最小化框”和“最大化框”随各自情况选择,其余的默认点“下一步”即可

将默认生成的三个控件按delete键删除

接下来导入TeeChart控件,选择“工具"-》"选择工具箱项"-》"COM组件",找到"TeeChart Pro Active control v5"并选中它,点击"确定"

在工具箱中找到“TeeChart Pro Active control v5”控件并拖放到对话框上,适当调整控件大小

控件已经导入了,接下来需要添加相关的“类”和“变量”,首先添加类。

在“类视图”中右键项目名称,选择“添加”-》“类”;

然后选择“MFC”项中的“TypeLib中的MFC类”,点“添加”。

在注册表的可用类型库中找到"TeeChart Pro Active control v5<1.0>",这里不需要一直下拉慢慢找,只要输入明销"tee"就可以直接选中

在“接口”中选择所需的类,Teechart控件包含很多类,CTChart是必须的,对应的接口是“ITChart”,其他类包括CSeries、CAxis、CAxes、CTitles等等,型腊这里仅以“CTChart”和“CSeries”为例,选择“ISeries”、“ITChart”。

确定以后可以在类视图中看到新添加的两个类。

接下来需要对控件关联变量,对控件右键选择“添加变量”,选择默认的控件类型,属于类“CTchart1”,对变量进行命名,这里命名为激租游"m_chart",这样类和变量就关联好了。

项目中会多出一个tchart1.h文件和tchart1.cpp文件,在对话框类的头文件CTestDlg.h中会有“CTchart1 m_chart”的变量定义,但是CTestDlg.cpp文件中对话框类的构造函数会多出一句“, m_chart(0)”,需要把它删除,否则会编译出错。这样前期准备工作就完成了

// MFC中画带者信枣箭头的直线

void CDrawArrowDemoView::DrawArrow(CPoint p1,CPoint p2,double theta,int length)

{

theta=3.1415926*theta/180//转换为弧度

double Px,Py,P1x,P1y,P2x,P2y

//以P2为原点得到向量P2P1(P)

Px=p1.x-p2.x

Py=p1.y-p2.y

//向量P旋转theta角得到向量P1

P1x=Px*cos(theta)-Py*sin(theta)

P1y=Px*sin(theta)+Py*cos(theta)

//向量P旋转坦辩-theta角得首拆到向量P2

P2x=Px*cos(-theta)-Py*sin(-theta)

P2y=Px*sin(-theta)+Py*cos(-theta)

//伸缩向量至制定长度

double x1,x2

x1=sqrt(P1x*P1x+P1y*P1y)

P1x=P1x*length/x1

P1y=P1y*length/x1

x2=sqrt(P2x*P2x+P2y*P2y)

P2x=P2x*length/x2

P2y=P2y*length/x2

//平移变量到直线的末端

P1x=P1x+p2.x

P1y=P1y+p2.y

P2x=P2x+p2.x

P2y=P2y+p2.y

CClientDC dc(this)//获取客户窗口DC

CPen pen,pen1,*oldpen

pen.CreatePen(PS_SOLID, 2, RGB(0, 0, 0))

pen1.CreatePen(PS_SOLID, 2, RGB(0, 0, 255))

oldpen=dc.SelectObject(&pen)

dc.MoveTo(p1.x,p1.y)

dc.LineTo(p2.x,p2.y)

dc.SelectObject(&pen1)

dc.MoveTo(p2.x,p2.y)

dc.LineTo(P1x,P1y)

dc.MoveTo(p2.x,p2.y)

dc.LineTo(P2x,P2y)

dc.SelectObject(oldpen)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11970541.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存