Отрисовка QPolygonF в QSGGeometry

Пытаюсь нарисовать полигон при помощи QSGGeometry/QSGFlatColorMaterial. Если я рисую прямоугольник с прямыми углами, то все работает корректно:

QPolygonF polygon;

// Прямоугольник с прямыми углами
polygon << QPointF(0, 0)
        << QPointF(230, 0)
        << QPointF(230, 230)
        << QPointF(0, 230)
        << QPointF(0, 0);

QSGGeometry *geometry = new QSGGeometry(QSGGeometry::defaultAttributes_Point2D(), polygon.count());
QSGFlatColorMaterial *material = new QSGFlatColorMaterial();

material->setColor(QColor("red"));
QSGGeometry::Point2D *vertices = geometry->vertexDataAsPoint2D();

for (int i = 0; i < polygon.count(); i++) {
    QPointF point = polygon.at(i);
    vertices[i].set(point.x(), point.y());
}

QSGGeometryNode *node = new QSGGeometryNode();
node->setGeometry(geometry);
node->setMaterial(material);

Корректный результат: Корректный результат

Но если я попытаюсь нарисовать прямоугольник с закругленными углами:

// Прямоугольник с закругленными углами
polygon << QPointF(0, 10)
        << QPointF(0.78585, 6.10755)
        << QPointF(2.92893, 2.92893)
        << QPointF(6.10755, 0.78585)
        << QPointF(10, 0)
        << QPointF(220, 0)
        << QPointF(223.892, 0.78585)
        << QPointF(227.071, 2.92893)
        << QPointF(229.214, 6.10755)
        << QPointF(230, 10)
        << QPointF(230, 220)
        << QPointF(229.214, 223.892)
        << QPointF(227.071, 227.071)
        << QPointF(223.892, 229.214)
        << QPointF(220, 230)
        << QPointF(10, 230)
        << QPointF(6.10755, 229.214)
        << QPointF(2.92893, 227.071)
        << QPointF(0.78585, 223.892)
        << QPointF(0, 220)
        << QPointF(0, 10);

То получаю такой результат: Некорректный результат

Мне необходимо чтобы контур прямоугольника заполнялся цветом. В чем может быть проблема и как это исправить?


Ответы (0 шт):