Polygon画多边形问题
我在用Polygon画多边形时出现了问题,向大家请教了
代码如下:
CDC *pDC;
pDC=GetDC();
////////////////声明顶点数组////////////////////////////////
POINT points[5]={(400,100),(550,240),(450,450),(250, 450),(150,250)};
Line mydisp(pDC);/////////Line为我自己做的画直线类,没有问题////////
COLORREF crColor=RGB(255, 0, 0);
mydisp.lineDDA(400, 100, 550, 240, crColor);//lineDDA为画直线算法,也没有问题。
mydisp.lineDDA(550, 240, 450, 450, crColor);
mydisp.lineDDA(450, 450, 250, 450, crColor);
mydisp.lineDDA(250, 450, 150, 250, crColor);
mydisp.lineDDA(150, 250, 400,100, crColor);
pDC->Polygon(points,5);
在这段程序中,我用了两种方式来画多边形,一是用自己的直线算法一条线一条线的画,但由于我后来要进行平移旋转等变换,所以觉得一条线一条线画不方便,想直接给出顶点数组就画出多边形。我就用CDC类的函数Polygon来画,但是最后画出的图形是错误的,并没有按照我给出的顶点数组来画,而是只显示了四个点,并且只有一个点与我给的点重合,另一个点位原点,剩下两个点不知是哪里来的,我猜可能是顶点数组有问题或坐标转换不对,但具体我也不知道哪里出了问题,请各位看一下,谢了。
还有,我自己又写了一个函数来画多边形,如下:
void Line::linepoints(LPPOINT lppoints,int nvectors,COLORREF color)
{
for(int k=0;k<nvectors;k++)
{
lineDDA(lppoints[k].x,lppoints[k].y,lppoints[
k+1].x,lppoints[k+1].y,color);
}
lineDDA(lppoints[nvectors-1].x,lppoints[nvect-1].y,
lppoints[0].x,lppoints[0].y,color);
}
调用 mydisp.linepoints(points,5,crColor);
最后画的图与Polygon一样,只是再多画了一条不相关的线而已,恳请指教!