QT drawPixmap和drawImage处理图片模糊问题

drawPixmap和drawImage显示图片时,如果图片存在缩放时,会出现模糊现象,例如将一个100x100

的图片显示到30x30的区域,这个时候就会出现模糊。如下:

实际图片:

这个问题就是大图显示成小图造成的像素失真。

当我们在1080的屏幕上显示清楚的图片放到2k屏幕上也可能会出现图片模糊,原因也是大图显示成小图或者显示成更大的图造成的缩放像素失真。

解决方法:按照要显示的大小,我们代码提前给它缩放处理,防止它自动缩放。

cpp 复制代码
QPainter p(this);

p.setPen(QColor(208,208,208));
p.setBrush(Qt::white);
p.setRenderHint(QPainter::Antialiasing);
QPainterPath path;
path.addEllipse(this->rect());
p.setClipPath(path);

p.drawEllipse(this->rect());
qreal pixelRatio = p.device()->devicePixelRatioF(); // 获取不同显示器的分辨率比例,防止不同分辨率下图片失真
m_logopix = m_logopix.scaled(QSize(width() * pixelRatio, height() *pixelRatio)
                             , Qt::IgnoreAspectRatio, Qt::SmoothTransformation);//缩放图片到当前分辨率下的显示大小,SmoothTransformation平滑处理。
p.drawPixmap(this->rect(),m_logopix);

处理后效果如下:

相关推荐
第七序章几秒前
【Linux学习笔记】初识Linux —— 理解gcc编译器
linux·运维·服务器·开发语言·人工智能·笔记·学习
消失的旧时光-194311 分钟前
C++ 拷贝构造、拷贝赋值、移动构造、移动赋值 —— 四大对象语义完全梳理
开发语言·c++
送秋三十五13 分钟前
一次大文件处理性能优化实录————Java 优化过程
java·开发语言·性能优化
Sylvia-girl24 分钟前
线程池~~
java·开发语言
fie888925 分钟前
基于MATLAB的转子动力学建模与仿真实现(含碰摩、不平衡激励)
开发语言·算法·matlab
lly20240628 分钟前
C# 变量作用域
开发语言
时艰.32 分钟前
java性能调优 — 高并发缓存一致性
java·开发语言·缓存
MSTcheng.33 分钟前
【C++】C++智能指针
开发语言·c++·智能指针
无小道34 分钟前
Qt——网络编程
开发语言·qt
wazmlp00188736936 分钟前
第五次python作业
服务器·开发语言·python