Polygon画多边形问题

ctyrzf 2007-04-11 02:18:05
我在用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一样,只是再多画了一条不相关的线而已,恳请指教!
...全文
904 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xlzxlich 2007-04-11
  • 打赏
  • 举报
回复
int points[5][2] = {{400,100}, {550,240}, {450,450}, {250, 450}, {150,250}};
pDC->Polygon((struct tagPOINT *)&points,5);
ctyrzf 2007-04-11
  • 打赏
  • 举报
回复
哎呀,真是可以了,谢谢阿
LZDGDX 2007-04-11
  • 打赏
  • 举报
回复
学习
xlzxlich 2007-04-11
  • 打赏
  • 举报
回复
points[0].x = 400;
points[0].y = 100;
points[1].x = 550;
points[1].y = 240;
points[2].x = 450;
points[2].y = 450;
points[3].x = 250;
points[3].y = 450;
points[4].x = 150;
points[4].y = 250;
pDC->Polygon(points,5);

OK.

菜牛 2007-04-11
  • 打赏
  • 举报
回复
不知道你有没有调整过前景色、背景色这些DC参数,默认画笔颜色是黑色的,至少上面的代码没有看到你创建、设置画笔,所以颜色肯定和你原来lineDDA的不同。如果正好背景色改成黑色了,那么也可能以为没画出来。
另外,把一个CDC*指针传入为类的成员变量,也不是好的方法,还是在需要使用的函数中把CDC*指针作为参数传入,不要在Line类里面保留,不知道有没有作过处理。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧