Qt图片显示有波纹

现象

Qt中当渲染显示的分辨率比原图片分辨率小时,就会有波纹。如下图所示,左边是正常显示,右边衬衫那里产生严重的波纹。这种波纹在计算机图形学叫摩尔纹,这是纹理贴图采样出现走样的现象,纹理分辨率过大时就会出现这种情况,关于这部分计算机图形学相关的知识网上有很多,我不是这方面的专业也讲不明白这些原理哈。

解决方式

 了解了其中的原因,一个比较直接的处理方式就是把原图scale为需要显示的分辨率大小是可以解决这个问题。对于静态显示图片这种方式是可行,因为只需处理scale一次就好了。但如果图片支持缩放,那每缩放一次就要scale一次,如果是大分率图片那就会卡顿了。

void MainWindow::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    auto image = m_image.scaled(QSize(500 , 500 )
                                 , Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
    painter.drawImage(QRect(0, 0, image.width(), image.height()), image);

    QMainWindow::paintEvent(event);
}

对于计算机图形学来说,可以使用Mipmap、Ripmap或其他算法进行改进。在QML中是支持启用Mipmap的,因为QML默认是使用opengl进行渲染,opengl有Mipmap相关算法的支持。

对于Mipmap的原理,需要了解的可以另外查找资料。

QML中Image控件是支持Mipmap设置,默认是没有启用。Image也可以使用上面说的scale后再显示,设置sourceSize为显示的大小就是这种效果。不设置sourceSize直接设置Mipmap也可以。

Image {
        id: imaItem
        width: 500
        height: 500
        sourceSize: Qt.size(width, height)
//        mipmap: true
        source: "qrc:/22.jpg"
    }

 如果是使用QQuickPaintedItem绘制图片,则可以使用setMipmap进行设置

 放上原图,这个图比较明显,适合拿来测试

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/7722.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解决Windows微信和 PowerToys 的键盘管理器冲突

Windows开机之后PowerToys能正常使用, 但是打开微信之后设置好的快捷键映射就全部失效了 打开微信 -> 左下角三条杠 -> 设置 -> 快捷键 首先我把微信的快捷键全部清空了,发现还是没用 然后发现了设置里默认勾选了检测快捷键,我在想程序肯定是一直在后台检测,而powerTo…

可以计算“如何把程序写好”吗?

其实简单理解这个问题就是“可不可以用机器来判断人的程序写得好不好? 后面我查阅了资料,历史上有一个对计算机领域影响颇深的可计算理论,“计算”应该就来源于这里。其实继续深挖还能找出很多涉及计算机本源的有趣的知识,比如图…

异构计算给我们带来了哪些思考?

虽然异构计算的快速发展给企业创新带来了更加强大的算力支撑,但真正推动异构计算的高速发展和应用落地,笔者认为还需要在以下三个方面做好功课。 从2022年火爆全球的元宇宙,到今年的ChatGPT,以人工智能为代表的科学技术正在创造出…

Unity Animation -- 改进动画效果

使用曲线(Curves)改善动画 在上一篇笔记中(Unity Animation -- Overview_亦枫Leonlew的博客-CSDN博客),我们制作了简单的小球弹跳的动画,但这个动画看起来很不自然,小球的弹跳看起来就像是不受…

Vue3信息提示(Modal)

Vue2信息提示(Modal) 可自定义设置以下属性: 标题描述(title),类型:string,默认 Title 内容描述(content),类型:string,…

盲盒经济下与社交电商结合,打造电商卖货新模式

如今,盲盒经济正在从线下延伸到线上,从潮流玩具扩展到美妆、食品、服装、数码等领域,形成了一种新的电商生态。 什么是盲盒电商? 盲盒电商是一种电商行业的营销模式,通过发起盲盒活动或拆盲盒,让参与者不…

MongoDB 查询文档(3)

我们之前讲解过,查询文档的语法: db.collection.find(query, projection, options) 其中 query 代表的是查询过滤器,projection 代表的是文档返回的字段,options 代表的是用于查询的其他选项; 我们已经对query进行了…

Ubuntu16.04虚拟机下安装Qt5.10.0

首先安装虚拟机Vmware,具体参见: Win10安装Vmware+Ubuntu16.04_芯片-嵌入式的博客-CSDN博客 安装完成后,下载qt-opensource-linux-x64-5.10.0.run,使用U盘来实现win10和ubuntu虚拟机之间的文件传输,cp到一个目录后,sudo ./qt-opensource-linux-x64-5.10.0.run进行运行,…

I/O多路转接之select

初识select 系统提供select函数来实现多路复用输入/输出模型.* select系统调用是用来让我们的程序监视多个文件描述符的状态变化的; * 程序会停在select这里等待,直到被监视的文件描述符有一个或多个发生了状态改变;select函数原型 select的函数原型如下: #include …

SpringCloud 使用sentinel

一、添加依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency> 二、配置文件配置地址 spring:cloud:sentinel:transport:dashboard: localhost:8080三…

【CSS】课程网站 网格商品展示 模块制作 ① ( 网格商品展示模块盒子模型测量及样式 | 顶部文本标题盒子测量及样式 | 代码示例 )

文章目录一、网格商品展示模块盒子模型测量及样式1、盒子尺寸测量2、标题盒子尺寸测量和样式3、左侧文本盒子尺寸测量和样式4、右侧文本盒子尺寸测量和样式二、顶部文本标题盒子代码示例1、HTML 标签结构2、CSS 样式3、展示效果绘制矩形框中的部分 : 一、网格商品展示模块盒子…

【服务器数据恢复】NTFS分区被格式化如何恢复数据?

服务器数据恢复环境&故障&#xff1a; 误操作格式化服务器RAID5磁盘阵列下的分区&#xff08;NTFS文件系统&#xff09;。 服务器数据恢复过程&#xff1a; 1、将故障服务器连接到北亚企安备份服务器上&#xff0c;将故障服务器的所有硬盘设置为脱机状态&#xff0c;然后以…

什么是中间件?

一、什么是中间件&#xff1f; 1、百度百科 中间件是介于应用系统和系统软件之间的一类软件&#xff0c;它使用系统软件所提供的基础服务&#xff08;功能&#xff09;&#xff0c;衔接网络上应用系统的各个部分或不同的应用&#xff0c;能够达到资源共享、功能共享的目的。目…

手写简易 Spring(二)

文章目录手写简易 Spring&#xff08;二&#xff09;1. 扩展 BeanFactory 接口2. 实现资源加载器&#xff0c;从 Spring.xml 解析和注册 Bean 对象1. 核心实现类 XmlBeanDefinitionReader3. 实现应用上下文&#xff0c;自动识别、资源加载、扩展机制1. 应用上下文2. 核心实现类…

java基础之抽象类与接口

文章目录1.抽象方法和抽象类2.抽象类的作用3.接口4.接口和抽象类的异同5.面向接口编程1.抽象方法和抽象类 抽象方法和抽象类必须使用abstract修饰符来定义&#xff0c;有抽象方法的类只能被定义成抽象类&#xff0c;抽象类里可以没有抽象方法。 抽象类必须使用abstract修饰符来…

【Redis学习】Redis入门概述

Redis是什么 Redis:REmote Dictionary Server(远程字典服务器) 官网介绍&#xff1a;The open source, in-memory data store used by millions of developers as a database, cache, streaming engine, and message broker.&#xff08;被数百万开发人员用作数据库、缓存、流…

在云服务部署前后端以及上传数据库

1.上传数据库(sql文件) 首先建立一个目录&#xff0c;用于存放要部署的sql文件&#xff0c;然后在此目录中进入mysql 进入后建立一个数据库&#xff0c;create database 数据库名 完成后&#xff0c;通过select * from 表名可以查到数据说明导入成功。 2.部署Maven后端 将Ma…

【预处理和程序环境】

预处理和程序环境一、程序的翻译环境和执行环境二、详解编译链接三、#define1. #define定义标识符2. #define定义宏3. #define的替换规则4. #和##4.1 #的使用4.2 ##的使用四、宏和函数对比五、条件编译一、程序的翻译环境和执行环境 我们的代码写完后称为源代码&#xff0c;源…

如何正确配置美国网络服务器?

在使用美国网络服务器时&#xff0c;充分注意其配置对于确保服务器和网络的性能、稳定性和安全性至关重要。网络服务器配置是指设置和配置网络服务器的硬件和软件以使其启动和运行的过程。它涉及多个步骤&#xff0c;包括配置操作系统、网络协议、安全设置、用户访问、共享资源…

linux驱动开发 - 01_字符设备驱动开发

文章目录字符设备驱动开发1. 字符设备驱动简介2 字符设备驱动开发步骤2.1 驱动模块的加载和卸载2.2 字符设备注册与注销2.3 实现设备的具体操作函数2.4 添加 LICENSE 和作者信息3 Linux 设备号3.1 设备号的组成3.2 设备号的分配4 chrdevbase 字符设备驱动开发实验4.1 实验程序编…
最新文章