我们目前正在使用商业库通过Windows进行图像渲染。当显示尺寸小于原始图像尺寸的单色图像时,此库将对图像进行灰度缩放,以便仍可以识别其中的大多数图像:
现在,我尝试使用Qt 4.8应用程序。
基本上,所做的是调用:
QImage mImage;
...
mImage.load(...);
...
painter.drawImage(paintRect, mImage, mImage.rect());
其中paintRect小于mImage.rect()。效果很好,但输出效果却差强人意:
我尝试了几个renderHints(QPainter::SmoothPixmapTransform,Antialiasing,HighQualityAntialiasing),还使用
mImage = mImage.convertToFormat(QImage::Format_RGB32);
QPainter::SmoothPixmapTransform似乎稍微改善了输出(它包含在屏幕截图中)。其他所有东西似乎都没有改变。
我想念什么吗?
如何改善缩小尺寸的图像显示?
最佳答案
可能在
painter.drawImage(paintRect, mImage, mImage.rect());
当大小不同时,画家只是插入要在初始图像中采用的像素。这将解释第二张图片。
秤手动使用
QImage todraw = mImage.scaled(
paintRect.size(),
Qt::IgnoreAspectRatio,
Qt::SmoothTransformation);
...
painter.drawImage(paintRect, todraw, mImage.rect());
您仅在调整大小事件时才计算图像
todraw
(以避免缩放每个绘画事件)而是与画家一起使用。