用Qt5 painter正确画圆弧
Drawing an arc correctly with Qt5 painter
我正在尝试在边界矩形的边缘绘制弧线。这很重要,因为我希望它随控件一起缩放。但是,当使用 boundingRect()
作为 drawArc()
的参数时,这会导致边缘被剪掉。
QBrush brush(QColor("#007430"));
painter->setBrush(brush);
QPen pen;
pen.setStyle(Qt::SolidLine);
float lineWidth1 = 6.0;
pen.setWidthF(lineWidth1);
painter->setPen(pen);
painter->setRenderHint(QPainter::Antialiasing);
painter->drawArc(boundingRect(), 45*16, 270*16);
为了使其正常工作,我必须传入一个每边小 1/2 笔宽的矩形。 在 QT 中是否有更直接的方法无需手动操作calculating/adjusting?
QRectF arcRect(0 + lineWidth1/2,
0 + lineWidth1/2,
boundingRect().width() - lineWidth1,
boundingRect().height() - lineWidth1);
painter->drawArc(arcRect, 45*16, 270*16);
很抱歉给你带来真正的答案,不幸的是不,在 Qt5 中没有自动缩放到 QPainter
绘图操作边界框的方法.因此,您必须根据具体情况在自己的代码中进行计算。
从好的方面来说,这个计算并不难,而且通过自己计算,您一定会保持对过程的完全控制。
我正在尝试在边界矩形的边缘绘制弧线。这很重要,因为我希望它随控件一起缩放。但是,当使用 boundingRect()
作为 drawArc()
的参数时,这会导致边缘被剪掉。
QBrush brush(QColor("#007430"));
painter->setBrush(brush);
QPen pen;
pen.setStyle(Qt::SolidLine);
float lineWidth1 = 6.0;
pen.setWidthF(lineWidth1);
painter->setPen(pen);
painter->setRenderHint(QPainter::Antialiasing);
painter->drawArc(boundingRect(), 45*16, 270*16);
为了使其正常工作,我必须传入一个每边小 1/2 笔宽的矩形。 在 QT 中是否有更直接的方法无需手动操作calculating/adjusting?
QRectF arcRect(0 + lineWidth1/2,
0 + lineWidth1/2,
boundingRect().width() - lineWidth1,
boundingRect().height() - lineWidth1);
painter->drawArc(arcRect, 45*16, 270*16);
很抱歉给你带来真正的答案,不幸的是不,在 Qt5 中没有自动缩放到 QPainter
绘图操作边界框的方法.因此,您必须根据具体情况在自己的代码中进行计算。
从好的方面来说,这个计算并不难,而且通过自己计算,您一定会保持对过程的完全控制。