使用 QPainter 绘制非优雅的碎椭圆
Posted
技术标签:
【中文标题】使用 QPainter 绘制非优雅的碎椭圆【英文标题】:Non-elegant chipped ellipses with 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));
【问题讨论】:
供参考:您说的是“抗锯齿”。 【参考方案1】:您需要启用抗锯齿功能:
painter.setRenderHint(QPainter::Antialiasing);
【讨论】:
【参考方案2】:添加调用
painter.setRenderHint(QPainter::Antialiasing)
绘制之前。
另请注意,基于区域的剪辑可能没有抗锯齿,因此您最好只绘制您感兴趣的部分(例如,使用带纹理的 QBrush 绘制椭圆)。 p>
【讨论】:
这实际上是一个更好的答案,至少对于我测试过的 Qt 3.4 而言。剪贴蒙版没有抗锯齿。以上是关于使用 QPainter 绘制非优雅的碎椭圆的主要内容,如果未能解决你的问题,请参考以下文章
利用QPainter绘制各种图形(Shape, Pen 宽带,颜色,风格,Cap,Join,刷子)