箭头的绘制,这个做过实现,可以很好的绘制出来

//说明:功能在线条尾部(终点)画箭头.
//flSx,flSy),(flEx,flEy):分别为线条起点终点坐标.
//flLength:箭头一边的长度.
//flAngle:箭头两边的夹角.
//pDC:图形设备句柄
//GetDistance:得到点点之间距离的函数,其代码在最下方提供.

**********************************
if(GetDistance(flSx,flSy,flEx,flEy)   ==   0)   return;
float   tmpX   =   flEx   +   (flSx-flEx)*flLength/GetDistance(flSx,flSy,flEx,flEy);
float   tmpY   =   flEy   +   (flSy-flEy)*flLength/GetDistance(flSx,flSy,flEx,flEy);
float   fl1X   =   (tmpX-flEx)*cos(-flAngle/2)   -   (tmpY-flEy)*sin(-flAngle/2)   +   flEx;
float   fl1Y   =   (tmpY-flEy)*cos(-flAngle/2)   +   (tmpX-flEx)*sin(-flAngle/2)   +   flEy;
float   fl2X   =   (tmpX-flEx)*cos(flAngle/2)   -   (tmpY-flEy)*sin(flAngle/2)   +   flEx;
float   fl2Y   =   (tmpY-flEy)*cos(flAngle/2)   +   (tmpX-flEx)*sin(flAngle/2)   +   flEy;
pDC-> MoveTo(flEx,flEy);
pDC-> LineTo(fl1X,fl1Y);
pDC-> MoveTo(flEx,flEy);
pDC-> LineTo(fl2X,fl2Y);
****************************************
辅助函数GetDistance为一个得距离的方法,代码如下
float   GetDistance(float   flStartx,float   flStarty,float   flEndx,float   flEndy)
{
float   flRlt;
flRlt=(flStartx-flEndx)*(flStartx-flEndx)+(flStarty-flEndy)*(flStarty-flEndy);
flRlt=sqrt(flRlt);
return   flRlt;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值