QPainter - рисовать полигон с несколькими отверстиями - PullRequest
1 голос
/ 11 апреля 2020

Я пытаюсь нарисовать многоугольник с несколькими отверстиями в них с помощью QPainter (QT5.8, win64). Я использую следующий код:

QPainter pm(&image);
QPen p(Qt::gray, 2);
p.setCosmetic(true);
pm.setPen(p);   
pm.setBrush(QBrush(color));

QPainterPath pap;

pap.addPolygon(pObject->getOuterGeometryPolyF());

for (int i = 0; i < (int)pObject->m_InnerGeometry.size(); i++)
{
    QPainterPath papInner;
    papInner.addPolygon(pObject->getInnerGeometryPolyF(i));
    pap = pap.subtracted(papInner);
}

pm.drawPath(pap);

Но он покажет только одну дыру (см. Изображение):

enter image description here

Может кто-нибудь предоставит мне пример того, как нарисовать многоугольник с несколькими отверстиями на нем? Документация не ясна по этому вопросу.

1 Ответ

0 голосов
/ 14 апреля 2020

Я отвечу на свой вопрос ...

Все зависит от порядка вращения многоугольника (по часовой стрелке или против часовой стрелки). Отверстия должны иметь противоположный порядок вращения внешнего многоугольника, чтобы он работал безупречно.

Так, например, внешний многоугольник = по часовой стрелке, внутренние многоугольники должны иметь против часовой стрелки. Если это не так, измените порядок в обратном порядке.

...