【问题标题】:Non-elegant chipped ellipses with QPainter使用 QPainter 绘制非优雅的碎椭圆
【发布时间】:2014-01-02 23:01:47
【问题描述】:

我正在围绕一个目标画一个椭圆。然而,椭圆没有连接和优雅。优雅是指它们不光滑。这就是图像周围的椭圆的样子

请注意圆不光滑并且有粗糙度我想让它成为一个光滑的圆/椭圆。关于我如何做到这一点的任何建议?这就是我目前做省略号的方式。

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

【问题讨论】:

  • 供参考:您说的是“抗锯齿”。

标签: c++ qt qpainter qtgui


【解决方案1】:

您需要启用抗锯齿功能:

painter.setRenderHint(QPainter::Antialiasing);

【讨论】:

    【解决方案2】:

    添加调用

    painter.setRenderHint(QPainter::Antialiasing)
    

    绘制之前。

    另请注意,基于区域的剪辑可能没有抗锯齿,因此您最好只绘制您感兴趣的部分(例如,使用带纹理的 QBrush 绘制椭圆)。 p>

    【讨论】:

    • 这实际上是一个更好的答案,至少对于我测试过的 Qt 3.4 而言。剪贴蒙版没有抗锯齿。
    猜你喜欢
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    相关资源
    最近更新 更多