QPainter-绘制带有多个孔的多边形

时间:2020-04-11 05:31:03

标签: qt qpainter qpainterpath

我正在尝试使用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 :(得分:1)

我会回答我自己的问题...

这完全取决于多边形的旋转顺序(顺时针或逆时针)。 孔应与外部多边形具有相反的旋转顺序,以使其正常工作。

例如,外部多边形=顺时针,内部多边形应具有逆时针顺序。如果不是这种情况,请颠倒顺序。