正文

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算法)

阅读(6973) | 评论(1)


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

评论

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