如何在QPainterPath中描边

How to stroke inside a QPainterPath

本文关键字:QPainterPath      更新时间:2023-10-16

当使用QPen描边QPainterPath时,它会在线的中心描边。我要做的是沿着内的描边的路径。我已经在这里看过一个类似的问题,但它没有提供一个明确的解决方案或例子。

如何在QPainterPath行内描边 ?

这是我能想到的最优雅的解决方案。

static QPolygonF shrinkPolygon(QPolygonF poly, qreal pixels)
{
    QPolygonF new_polygon;
    QSizeF size = poly.boundingRect().size();
    qreal x_center = size.width()/2;
    qreal y_center = size.height()/2;
    for(int x=0; x < poly.size(); x++)
    {
        QPointF point = poly.at(x);
        if(point.x() <  x_center)
        {
            point.setX(point.x()+pixels);
        }
        else
        {
            point.setX(point.x()-pixels);
        }
        if(point.y() < y_center)
        {
            point.setY(point.y()+pixels);
        }
        else
        {
            point.setY(point.y()-pixels);
        }
        new_polygon.append(point);
    }
    return new_polygon;
}