void CPlayWnd::DrawArrow(CPoint p1,CPoint p2,double theta,int length)
{
theta=3.1415926*theta/180;//转换为弧度
double Px,Py,P1x,P1y,P2x,P2y;
//以P2为原点得到向量P2P1(P)
Px=p1.x-p2.x;
Py=p1.y-p2.y;
//向量P旋转theta角得到向量P1
P1x=Px*cos(theta)-Py*sin(theta);
P1y=Px*sin(theta)+Py*cos(theta);
//向量P旋转-theta角得到向量P2
P2x=Px*cos(-theta)-Py*sin(-theta);
P2y=Px*sin(-theta)+Py*cos(-theta);
//伸缩向量至制定长度
double x1,x2;
x1=sqrt(P1x*P1x+P1y*P1y);
P1x=P1x*length/x1;
P1y=P1y*length/x1;
x2=sqrt(P2x*P2x+P2y*P2y);
P2x=P2x*length/x2;
P2y=P2y*length/x2;
//平移变量到直线的末端
P1x=P1x+p2.x;
P1y=P1y+p2.y;
P2x=P2x+p2.x;
P2y=P2y+p2.y;
//Graphics g(hdc);
//GraphicsPath hPath;
//Pen pen(Color(255,0,0,0),4);
//hPath.AddLine(Point(p2.x,p2.y),Point(P1x,P1y));
//hPath.AddLine(Point(P1x,P1y),Point(P2x,P2y));
//hPath.AddLine(Point(P2x,P2y),Point(p2.x,p2.y));
//CustomLineCap myCap(&hPath,NULL);
//pen.SetCustomStartCap(&myCap);
//pen.SetCustomEndCap(&myCap);
//g.DrawLine(&pen,100,100,500,100);
CClientDC dc(this);//获取客户窗口DC
CPen pen,pen1,*oldpen;
pen.CreatePen(PS_SOLID, 1, RGB(255, 0, 0));
pen1.CreatePen(PS_SOLID, 1, RGB(255, 0, 0));
oldpen=dc.SelectObject(&pen);
dc.MoveTo(p1.x,p1.y);
dc.LineTo(p2.x,p2.y);
dc.SelectObject(&pen1);
dc.MoveTo(p2.x,p2.y);
dc.LineTo(P1x,P1y);
dc.MoveTo(p2.x,p2.y);
dc.LineTo(P2x,P2y);
dc.MoveTo(P1x,P1y);
dc.LineTo(P2x,P2y);
dc.SelectObject(oldpen);
}