带有QPainter的非优雅切片椭圆

时间:2014-01-02 23:01:48

标签: c++ qt qpainter qtgui

我在目标周围绘制一个椭圆。然而,椭圆没有连接和优雅。优雅我的意思是他们不顺利。这就是图像周围的椭圆看起来像

注意圆圈不平滑且有粗糙度我想使它成为一个光滑的圆/椭圆。有关如何做到这一点的任何建议?这是我目前正在做的省略号。

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));

2 个答案:

答案 0 :(得分:4)

您需要启用抗锯齿:

painter.setRenderHint(QPainter::Antialiasing);

答案 1 :(得分:3)

添加对

的调用
painter.setRenderHint(QPainter::Antialiasing)
在绘图之前

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