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);

处理后效果如下:

相关推荐
找不到、了1 分钟前
Java系统设计知识整理《1》
java·开发语言
q***06294 分钟前
环境安装与配置:全面了解 Go 语言的安装与设置
开发语言·后端·golang
程序猿七度5 分钟前
【Excel导入】读取WPS格式嵌入单元格内的图片
java·开发语言·wps
IoT智慧学堂16 分钟前
C语言流程控制:if判断语句全解析
c语言·开发语言
楼田莉子17 分钟前
C++/Linux小项目:自主shell命令解释器
linux·服务器·开发语言·c++·后端·学习
EXtreme3521 分钟前
C语言指针深度剖析(2):从“数组名陷阱”到“二级指针操控”的进阶指南
c语言·开发语言·算法
程序员大雄学编程1 小时前
定积分的几何应用(一):平面图形面积计算详解
开发语言·python·数学·平面·微积分
Evand J1 小时前
【MATLAB例程】二维平面的TOA定位,几何精度因子GDOP和克拉美罗下界CRLB计算与输出
开发语言·matlab·平面·crlb·gdop
草莓火锅1 小时前
用c++求第n个质数
开发语言·c++·算法
aniden1 小时前
Swagger从入门到实战
java·开发语言·spring