在GDI中填充多边形

问题描述:

我得到了一个自绘多边形(4点和lineto(),多边形()不起作用,因为它在屏幕上移动多边形时会留下标记),这需要填充。 任何人都可以帮助我吗?在GDI中填充多边形

这里是我的功能DrawHand

void CClock::DrawHand (CDC* pDC, int nLength, int nScale, int nDegrees, COLORREF clrColor) 
    { 
     CPoint point[4]; 
     double nRadians = (double) nDegrees * 0.017453292; 

     point[0].x = (int) (nLength * sin (nRadians)); 
     point[0].y = (int) (nLength * cos (nRadians)); 

     point[2].x = -point[0].x/nScale; 
     point[2].y = -point[0].y/nScale; 

     point[1].x = -point[2].y; 
     point[1].y = point[2].x; 

     point[3].x = -point[1].x; 
     point[3].y = -point[1].y; 

     CPen pen (PS_SOLID, 0, clrColor); 
     CPen* pOldPen = pDC->SelectObject (&pen); 

      pDC->MoveTo(point[0]); 
     pDC->LineTo(point[1]); 
     pDC->LineTo(point[2]); 
     pDC->LineTo(point[3]); 
     pDC->LineTo(point[0]); 

      pDC->SelectObject (pOldPen); 
    } 
+0

你可以展示一些你到目前为止的代码吗? – alf 2012-02-10 13:56:21

+0

@alfonso我已经将它包含在我的问题中了。 – 2012-02-10 14:05:49

+0

现在明白了。我做了一个Polygon()。之前做过这个,但给了一个错误的参数。不管怎么说,还是要谢谢你。 – 2012-02-10 14:14:16

多边形“叶痕”在移动时的原因是因为你不清除,当你重绘背景。首先绘制一个带有背景颜色的矩形。