【发布时间】:2016-03-11 01:14:49
【问题描述】:
我正在使用下面的代码来画一个圆圈。
QPixmap target(110, 130); // the size may vary
target.fill(Qt::transparent);
QPixmap p = QPixmap::fromImage( QImage(":/Images/head").scaled(110,110,Qt::IgnoreAspectRatio,Qt::SmoothTransformation).convertToFormat(QImage::Format_ARGB32));
QPainter painter(&target);
painter.setRenderHint(QPainter::Antialiasing);
painter.setRenderHint(QPainter::Antialiasing, true);
QRegion r(QRect(10,10,100,100), QRegion::Ellipse);
painter.setClipRegion(r);
painter.drawPixmap(0, 0,p);
ui->label->setPixmap(target);
这是我得到的输出
请注意圆圈不平滑。我的问题是我怎样才能使这个圈子变得平滑。
【问题讨论】:
-
仅供参考,
painter.setRenderHint(QPainter::Antialiasing);和painter.setRenderHint(QPainter::Antialiasing, true);之间没有区别。 -
感谢您解决这个问题
-
您可以使用 QPainterPath 代替 QRegion。 QPainterPath p; p.addEllipse(QRect(10,10,100,100));画家.setClipPath(p);