Заполнение многоугольника в GDI - PullRequest
0 голосов
/ 10 февраля 2012

У меня есть нарисованный многоугольник (4 точки и lineto (), polygon () не работает, потому что он оставляет следы, когда я перемещаю многоугольник на экране), который необходимо заполнить.Кто-нибудь может мне помочь?

Вот моя функция 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);
    }

1 Ответ

0 голосов
/ 10 февраля 2012

Причина, по которой многоугольник "оставляет следы" при перемещении, заключается в том, что вы не очищаете фон при перерисовке. Начните с рисования прямоугольника с цветом фона.

...