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

处理后效果如下:

相关推荐
Felix_One21 小时前
Qt 串口通信避坑指南:QSerialPort 的 5 个常见问题
qt
blasit4 天前
笔记:Qt C++建立子线程做一个socket TCP常连接通信
c++·qt·tcp/ip
郑州光合科技余经理9 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
feifeigo1239 天前
matlab画图工具
开发语言·matlab
dustcell.9 天前
haproxy七层代理
java·开发语言·前端
norlan_jame9 天前
C-PHY与D-PHY差异
c语言·开发语言
多恩Stone9 天前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc
QQ4022054969 天前
Python+django+vue3预制菜半成品配菜平台
开发语言·python·django
遥遥江上月9 天前
Node.js + Stagehand + Python 部署
开发语言·python·node.js
m0_531237179 天前
C语言-数组练习进阶
c语言·开发语言·算法