19,468
社区成员
发帖
与我相关
我的任务
分享
afx_msg void CBottomFormView::CreateRhombus(Point _ptUL,Point _ptBL,Point &_ptUR,Point &_ptBR, double _dWidth,CDC *pDC)
{
//矩形的坐标计算
int dx=_ptBL.X-_ptUL.X;
int dy=_ptBL.Y-_ptUL.Y;
double dHeight=pow(pow((double)(_ptUL.X-_ptBL.X),2)+pow((double)(_ptUL.Y-_ptBL.Y),2),0.5);
_ptBR.X=_ptBL.X-_dWidth*dy/dHeight;
_ptBR.Y=_ptBL.Y+_dWidth*dx/dHeight;
_ptUR.X=_ptUL.X-_dWidth*dy/dHeight;
_ptUR.Y=_ptUL.Y+_dWidth*dx/dHeight;
CPoint _ptPointUL(_ptUL.X,_ptUL.Y);
CPoint _ptPointBL(_ptBL.X,_ptBL.Y);
CPoint _ptPointUR(_ptUR.X,_ptUR.Y);
CPoint _ptPointBR(_ptBR.X,_ptBR.Y);
draw:
pDC->MoveTo(_ptPointUL);
pDC->LineTo(_ptPointBL);
pDC->LineTo(_ptPointBR);
pDC->LineTo(_ptPointUR);
pDC->LineTo(_ptPointUL);
}
完美!接下来就是实现HitTest了!
void CreateRhombus(CPoint P1,CPoint P2,CPoint &P3,CPoint &P4,CDC *pDC)
{
int dx=P2.x-P1.x;
int dy=P2.y-P1.y;
// double L=sqrt(dx*dx+dy*dy);// 96
// double cosa=dx/L;
// double sina=dy/L;
P3.x=P2.x-dy;// L*sina=L*dy/L
P3.y=P2.y+dx;// L*cosa=L*dx/L
P4.x=P1.x-dy;// L*sina;
P4.y=P1.y+dx;// L*cosa;
//
pDC->MoveTo(P2);
pDC->LineTo(P3);
pDC->LineTo(P4);
pDC->LineTo(P1);
}