正文

VC中的箭头画法2007-01-03 01:01:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/yuqiexing/22175.html

分享到:

在一些路径图中常常需要作出箭头,而MFC中并没有提供这样的函数,只好自己编写. 如图所示,有一直线p1p2,现在要在p2端画出一个箭头,p2p3就是箭头的一遍,做好辅助线,其中p2p3长度与p1p2相等.len是需要的箭头长度,theta是箭头的倾斜角度,图中的17度.         void CMyView::LineArrow(CPoint p1, CPoint p2,CDC *pDC) {        double x0,y0,x1,y1,x2,y2;        //(x0,y0)是p2p1的向量表示        x0=p1.x-p2.x;        y0=p1.y-p2.y;        //根据角度求出图中的p2p3向量和另一边的向量        x1=x0*cos(theta)-y0*sin(theta);        y1=x0*sin(theta)+y0*cos(theta);        x2=x0*cos(theta)+y0*sin(theta);        y2=x0*sin(-theta)+y0*cos(theta);        double l1,l2;        l1=sqrt(x1*x1+y1*y1);        l2=sqrt(x2*x2+y2*y2);        //求出对应于len的向量        x1=x1*len/l1;        x2=x2*len/l2;        y1=y1*len/l1;        y2=y2*len/l2;        //求出箭头向量的终点        x1+=p2.x;        y1+=p2.y;        x2+=p2.x;        y2+=p2.y;        pDC->MoveTo(p2.x-1,p2.y-1);        pDC->LineTo(x1,y1);        pDC->MoveTo(p2.x-1,p2.y-1);        pDC->LineTo(x2,y2);   }   看看我应用的效果.下面是一个简单的数字化查询系统,查询路径时可以显示出漂亮的路径箭头动画效果(动画参见LineDDA算法)

阅读(9242) | 评论(1)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册