在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);
}
答
多边形“叶痕”在移动时的原因是因为你不清除,当你重绘背景。首先绘制一个带有背景颜色的矩形。
你可以展示一些你到目前为止的代码吗? – alf 2012-02-10 13:56:21
@alfonso我已经将它包含在我的问题中了。 – 2012-02-10 14:05:49
现在明白了。我做了一个Polygon()。之前做过这个,但给了一个错误的参数。不管怎么说,还是要谢谢你。 – 2012-02-10 14:14:16