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

处理后效果如下:

相关推荐
啊啊啊啊啊!!!!14 分钟前
【c++】stack和queue的接口使用以及底层实现
开发语言·c++
松仔log1 小时前
Java中级——组合和继承
android·java·开发语言
上海安当技术2 小时前
C/S 桌面软件怎么接 UKey 强认证?C# SDK 与 C 动态库集成 WinForms/Qt/工控实战
c语言·qt·c#
(Charon)3 小时前
【C++】锁与原子操作(四):自旋锁的完整实现与性能优化
c语言·开发语言·c++
雨田言炎3 小时前
五、Qt控件使用说明大全
开发语言·qt
bu_shuo4 小时前
MATLAB中的meshgrid和ndgrid
开发语言·matlab
我命由我123455 小时前
Jetpack Compose - MaterialExpressiveTheme 与 MaterialTheme、ColorScheme
android·java·开发语言·java-ee·kotlin·android jetpack·android runtime
深海呐5 小时前
仓颉语言是ArkTs的上层语言吗?就像kotlin和Java
java·开发语言·kotlin·仓颉
熬夜苦读学习5 小时前
Qt--界面优化
开发语言·qt
白露与泡影5 小时前
聊聊物联网Java后端的核心技术难点(水表/电表/充电桩实战)
java·开发语言·物联网