QPainter::drawPixmap() 看起来不好看而且质量很差?

QPainter::drawPixmap() doesn't look good and has low quality?

我正在尝试在 QWidget 中使用 QPainter::drawPixmap() 绘制一个图标 (.png) :

QPixmap _source = "/.../.png";
painter.setRenderHint(QPainter::HighQualityAntialiasing);
painter.drawPixmap(rect(), _source);

但与 QLabel(例如)和较小尺寸(在我的例子中为 19*19)相比,结果并不完美。

我能做什么?

****编辑****

QLabel 像素图 @ 大小 19*19:

我的画 @ 尺寸 19*19 通过 SmoothPixmapTransform 渲染类型:

您设置了错误的渲染提示,您需要 QPainter::SmoothPixmapTransform 才能顺利调整大小。默认情况下使用最近邻方法,速度快但质量很低并且像素化结果。

QPainter::HighQualityAntialiasing用于绘制线条和填充路径等,即光栅化几何图形时,它对绘制光栅图形没有影响。

编辑:似乎 SmoothPixmapTransform 能做的只有这么多,而当最终结果如此之小时,它并不多:

  QPainter p(this);
  QPixmap img("e://img.png");
  p.drawPixmap(QRect(50, 0, 50, 50), img);
  p.setRenderHint(QPainter::SmoothPixmapTransform);
  p.drawPixmap(QRect(0, 0, 50, 50), img);
  img = img.scaled(50, 50, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
  p.drawPixmap(100, 0, img);

此代码产生以下结果:

第二张和第三张图片几乎没有任何区别,手动将源图片缩放到所需尺寸并绘制它会产生最佳效果。这当然是不对的,预计 SmoothTransformation 会产生相同的结果,但由于某种原因,它的缩放比例不如 QPixmapscale() 方法。