带有 QPainter 的非优雅碎椭圆

Non-elegant chipped ellipses with QPainter

本文关键字:QPainter 带有      更新时间:2023-10-16

我在目标周围画一个椭圆。但是,省略号没有连接和优雅。我所说的优雅是指它们不光滑。这是图像周围的椭圆的样子

请注意,圆不光滑并且粗糙,我想使其成为光滑的圆/椭圆。关于我该怎么做的任何建议?这就是我目前做省略号的方式。

QPainter painter(target);
QPen pen;
pen.setColor(Qt::red);
pen.setWidth(4);
pen.setStyle( Qt::SolidLine);
pen.setCapStyle(Qt::SquareCap);
pen.setJoinStyle(Qt::BevelJoin);
painter.setPen(pen);
QRegion r(QRect(0, 0, 50, 50), QRegion::Ellipse); 
painter.setClipRegion(r);
painter.drawPixmap(0, 0, source);
painter.drawEllipse(QRect(1, 1, 49, 49));

您需要启用抗锯齿:

painter.setRenderHint(QPainter::Antialiasing);

添加对

painter.setRenderHint(QPainter::Antialiasing)

在绘制之前。

另请注意,基于区域的剪裁可能不会抗锯齿,因此您最好只绘制您感兴趣的部分(例如,通过绘制带有纹理的 QBrush 的椭圆)。