QPainter :: drawPixmap()看起来不好并且质量低劣?

IMAN4K

我想画一个内部的图标文件(.png)QWidgetQPainter::drawPixmap()

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会产生相同的结果,但是由于某种原因,它的缩放效果不如的scale()方法QPixmap

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

QPainter。画线

来自分类Dev

Visual Studio图标看起来不好

来自分类Dev

换行时按钮看起来不好

来自分类Dev

拉伸时背景图像看起来不好

来自分类Dev

更改QPainter的原点

来自分类Dev

使用QPainter平滑绘制

来自分类Dev

QPainter在时钟上画数字

来自分类Dev

QPainter :: begin():返回false

来自分类Dev

更改QPainter的原点

来自分类Dev

QPainter 不绘制

来自分类Dev

Bootstrap 弹出模式看起来很小并且位置错误

来自分类Dev

QT 5.7 QPainter线路要求

来自分类Dev

获取QPainter的可见区域

来自分类Dev

使用QPainter绘制富文本

来自分类Dev

多次使用QPainter和QPaintDevice

来自分类Dev

QPainter旋转。在哪里翻译?

来自分类Dev

在PyQt GUI中集成QPainter

来自分类Dev

QPainter在QScrollArea内绘制线条

来自分类Dev

使用QPainter缓慢更新QQuickPaintedItem

来自分类Dev

获取QPainter的可见区域

来自分类Dev

为什么在某些应用程序中字体看起来不好?

来自分类Dev

为什么在某些应用程序中字体看起来不好?

来自分类Dev

backBarButtonItem看起来不快

来自分类Dev

backBarButtonItem看起来不快

来自分类Dev

哎呀,看起来出事了

来自分类Dev

哎呀,看起来出事了 :(

来自分类Dev

Babylon.js-使用Blender创建的模型看起来是圆形的并且形状怪异

来自分类Dev

在OL3中,我的地图看起来很奇怪并且“稀疏”

来自分类Dev

如何使字体看起来很旧并且在浏览器中被淘汰