//说明:功能在线条尾部(终点)画箭头.
//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;
}
//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;
}