我为我的应用程序创建了一个气球小部件。问题是小部件的尖端是锯齿状的,所以我做错了什么?
void BalloonWidget::paintEvent(QPaintEvent *)
{
QVector<QPointF> vertices;
vertices << QPointF(0, 0)
<< QPointF(width(), 0)
<< QPointF(width(), height() * 0.8)
<< QPointF(width() * 0.60, height() * 0.8)
<< QPointF(width() * 0.5, height())
<< QPointF(width() * 0.40, height() * 0.8)
<< QPointF(0, height() * 0.8);
balloonPoly = QPolygonF(vertices);
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setRenderHint(QPainter::HighQualityAntialiasing, true);
painter.setBrush(QBrush(backgroundColor));
QRegion maskRegion(balloonPoly.toPolygon(), Qt::WindingFill);
painter.drawPolygon(balloonPoly);
setMask(maskRegion);
}
答案 0 :(得分:0)
在我看来,由于抗锯齿提示不起作用而导致的锯齿状没有引起,但掩码:
QRegion maskRegion(balloonPoly.toPolygon(), Qt::WindingFill);
painter.drawPolygon(balloonPoly);
setMask(maskRegion);
屏蔽是1位透明/不透明。无法解决此问题。
<强> BUT 强>
由于您自己绘制多边形,因此似乎没有理由使用蒙版。
移除面具并检查&#34;锯齿状&#34;试。
答案 1 :(得分:0)
我找到了锯齿状的原因。我错误地认为我必须掩盖多边形。如果您使用抗锯齿并且只需要1px(化妆笔)笔,则顶点坐标必须“移位”0.5px并且宽度/高度必须不均匀。所以我从宽度和高度减去0.5。现在它非常流畅