您的位置:首页 > 其它

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

2012-08-23 16:10 169 查看
//说明:功能在线条尾部(终点)画箭头.

//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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐