C++| QT图片调整透明度叠加

QT图片调整透明度叠加

  • 实际效果
  • 界面UI
    • 放置控件
    • 设置布局
    • 界面自适应
  • 代码
    • 项目工程的文件
    • 初始化
    • 按钮功能
    • 滑动条功能
    • 图片调整透明度叠加

实际效果

三个图片(QLabel)显示,两个按钮(QPushButton)加载图片,一个(Slider)滑动条。
三个图片:从左到右,显示图像A、图像B以及透明度叠加后的图像。
两个按钮:“打开图像A”打开图像A并显示;“打开图像B”打开图像B并显示。
滑动条:控制透明度比例。
在这里插入图片描述

界面UI

放置控件

把控件按照前面“实际效果”取出并放置。

设置布局

一个垂直布局包括了两个水平布局。
在这里插入图片描述
布局以及控件相关的名字。
在这里插入图片描述

界面自适应

随着窗口调整
思路:centralwidget变为栅格布局(虽然前面我的图片上已经是,但是新建的时候通常是不能修改的表单布局Form Layout)。
方法:工具->界面编辑器->栅格布局

调整布局中比例
情况:希望垂直布局中上面部分比下面大。
方法:右键对象“upLayout”升级为Qwidget,让其具有Qwidget属性。设置sizePolicy属性,修改其垂直伸展因子,让其为1即可。此时“downLayout”默认垂直伸展因子为0,只会保持一个建议尺寸。
补充知识点:甚至布局中的伸展因子设置的是不同元素在其中自适应的比例,为0时会保持一个建议尺寸。

处理QLabel添加图片后,布局错乱
原因:为QLabel添加图片通常都会分辨率大于分配的,会挤压其它空间,从而导致布局错乱。
表现:我遇到情况表现为,水平方向缩小一定大小后无法缩小。
方法:修改“upLayout” 的sizePolicy属性,让水平策略和垂直策略都为Ignored。

在这里插入图片描述

代码

项目工程的文件

在这里插入图片描述

初始化

变量:在界面cpp文件中声明两个地址全局变量,记录打开图像A和B的路径。

QString pathA,pathB;

滑动条值:在界面cpp文件中的构造函数里面初始化滑动条的范围和初始值。

PicMix::PicMix(QWidget *parent): QMainWindow(parent), ui(new Ui::PicMix)
{ui->setupUi(this);ui->sliderTrans->setMaximum(100);ui->sliderTrans->setMinimum(0);ui->sliderTrans->setValue(50);
}

图片调整透明度叠加函数的添加:在界面的h和cpp文件中添加。

void display_picMix(int value);

按钮功能

采用自动关联信号和槽的方法,右键“按钮”->转到槽。
在这里插入图片描述
代码:

void PicMix::on_btnA_clicked()
{pathA=QFileDialog::getOpenFileName();ui->labelA->setScaledContents(true);ui->labelA->setPixmap(pathA);display_picMix(ui->sliderTrans->value());
}void PicMix::on_btnB_clicked()
{pathB=QFileDialog::getOpenFileName();ui->labelB->setScaledContents(true);ui->labelB->setPixmap(pathB);display_picMix(ui->sliderTrans->value());
}

滑动条功能

采用自动关联信号和槽的方法,右键“按钮”->转到槽。
在这里插入图片描述
代码:

void PicMix::on_sliderTrans_valueChanged(int value)
{display_picMix(value);
}

图片调整透明度叠加

函数输入滑条的值,然后计算图像A和图像B的像素值,根据value调整透明度后叠加显示出来。

void PicMix::display_picMix(int value){// value是滑动条当前值// 地址是否存在if(pathA.isNull()||pathB.isNull())return ;// 读取图片A和图片B的数据QImage imageA,imageB;imageA.load(pathA);imageB.load(pathB);// 获取图片高度和宽度,选择最小的int w,h;w=qMin(imageA.width(),imageB.width());h=qMin(imageA.height(),imageB.height());// 声明imageMix用来存储叠加后的图像数据QImage imageMix(w,h, QImage::Format_ARGB32);float alpha=value/100.0;// 计算透明程度QColor colorA,colorB;int r,g,b;for(int x=0;x<w;x++){for(int y=0;y<h;y++){colorA=QColor(imageA.pixel(x,y));colorB=QColor(imageB.pixel(x,y));r=colorA.red()*alpha+colorB.red()*(1-alpha);g=colorA.green()*alpha+colorB.green()*(1-alpha);b=colorA.blue()*alpha+colorB.blue()*(1-alpha);imageMix.setPixel(x,y,qRgb(r,g,b));}}ui->labelMix->setScaledContents(true);ui->labelMix->setPixmap(QPixmap::fromImage(imageMix));
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring 声明式事务 @Transactional

目录 一、添加依赖 二、Transactional 作用 三、Transactional详解 3.1 rollbackFor 3.2 事务隔离级别 3.3 Spring 事务传播机制 Spring 声明式事务 Transactional的使用很简单&#xff0c;只需要添加依赖&#xff0c;在需要的方法或者类上添加 Transactional注解即可。 …

AMBA-CHI协议详解(六)

AMBA-CHI协议详解&#xff08;一&#xff09; AMBA-CHI协议详解&#xff08;二&#xff09; AMBA-CHI协议详解&#xff08;三&#xff09; AMBA-CHI协议详解&#xff08;四&#xff09; AMBA-CHI协议详解&#xff08;五&#xff09; AMBA-CHI协议详解&#xff08;六&#xff09…

硬件面试经典 100 题(71~90 题)

71、请问下图电路的作用是什么&#xff1f; 该电路实现 IIC 信号的电平转换&#xff08;3.3V 和 5V 电平转换&#xff09;&#xff0c;并且是双向通信的。 上下两路是一样的&#xff0c;只分析 SDA 一路&#xff1a; 1&#xff09; 从左到右通信&#xff08;SDA2 为输入状态&…

Golang | Leetcode Golang题解之第349题两个数组的交集

题目&#xff1a; 题解&#xff1a; func intersection(nums1 []int, nums2 []int) (res []int) {sort.Ints(nums1)sort.Ints(nums2)for i, j : 0, 0; i < len(nums1) && j < len(nums2); {x, y : nums1[i], nums2[j]if x y {if res nil || x > res[len(re…

Python基础和变量使用

1. 基础了解 1.1 运行方式 Python有多种运行方式&#xff0c;以下是几种常见的执行Python代码的方法&#xff1a; 交互式解释器&#xff1a; 打开终端或命令提示符&#xff0c;输入python或python3&#xff08;取决于你的系统配置&#xff09;&#xff0c;即可进入Python交互…

设计模式---构建者模式(Builder Pattern)

构建者模式&#xff08;Builder Pattern&#xff09; 是一种创建型设计模式&#xff0c;旨在将复杂对象的构建过程与其表示分离。它允许使用相同的构建过程创建不同的表示。该模式通常用于构建复杂对象&#xff0c;这些对象由多个部分组成或具有多个可选属性。 构建者模式的核…

Python做统计图之美

Python数据分析可视化 案例效果图 import pandas as pd import matplotlib.pyplot as plt import matplotlib# 数据 data {"房型": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],"住宅类型": ["普通宅", "普通宅", "普通宅", &q…

ffmpeg开发者视频剪辑器

5G 时代的来临&#xff0c;加速了视频类作品的创作&#xff0c;由于现在的流量越来越便宜&#xff0c;网速越来越快&#xff0c;特别是流量无限用套餐&#xff0c;大家更愿意去看视频作品&#xff0c;特别是抖音的兴起&#xff0c;更是加速了小视频的流量。不会剪辑的我们该如何…

内网安全:跨域攻击

目录 获取域信息 利用域信任密钥获取目标域 利用krbtgt哈希值获取目标域 内网中的域林&#xff1a; 很多大型企业都拥有自己的内网&#xff0c;一般通过域林进行共享资源。根据不同职能区分的部门&#xff0c;从逻辑上以 主域和子域进行区分&#xff0c;以方便统一管理。在…

选择排序(直接选择排序与堆排序的比较)

选择排序 选择排序时间复杂度 1. 直接选择排序思考⾮常好理解&#xff0c;但是效率不是很好。实际中很少使用&#xff0c;思路是先进行遍历找到元最小的元素&#xff0c;然后与第一个进行交换 2. 时间复杂度&#xff1a;O&#xff08;&#xff09; 3. 空间复杂度&#…

openharmony 南向开发基础:ohos自定义子系统,自定义部件,调用hilog部件,hilog日志封装傻瓜式教程

openharmony 南向开发基础:ohos自定义子系统,自定义部件,调用hilog部件,hilog日志封装 自定义单部件 关于开源鸿蒙的南向教程不多,很多都是从官方文档上抄的的例子,官网的例子不是很适合入门,写的很粗糙,不适合傻瓜阅读,毕竟对于刚入行鸿蒙的新手而言,gn语法就是第一劝退魔咒…

vue 路由用法 router-view

通过router-view 点击子路由显示子路由关于我们的内容&#xff0c;点击关于信息显示关于信息内容。

map/set和unordered_map/unordered_set的区别及使用情况

map/set和unordered_map/unordered_set的区别 容器底层数据结构是否有序实现版本复杂度迭代器map/set红黑树有序C98O(logN&#xff09;双向迭代器unordered_map/unordered_set哈希表/散列表无序C11O(1)单向迭代器 unordered_set无序的&#xff08;VS下&#xff09; void uno…

【机器学习】探索数据矿藏:Python中的AI大模型与数据挖掘创新实践

&#x1f496; 前言&#xff1a;探索数据矿藏1. &#x1f4ca;数据获取与预处理&#xff1a;AI大模型的燃料1.1 &#x1f310;数据获取&#xff1a;多样性与规模并重1.2 &#x1f9f9;数据清洗与处理&#xff1a;提升数据质量1.3 &#x1f50d;特征工程&#xff1a;挖掘数据的深…

蓝牙音视频远程控制协议(AVRCP) command跟response介绍

零.声明 本专栏文章我们会以连载的方式持续更新&#xff0c;本专栏计划更新内容如下&#xff1a; 第一篇:蓝牙综合介绍 &#xff0c;主要介绍蓝牙的一些概念&#xff0c;产生背景&#xff0c;发展轨迹&#xff0c;市面蓝牙介绍&#xff0c;以及蓝牙开发板介绍。 第二篇:Trans…

[Qt][QSS][下]详细讲解

目录 1.样式属性0.前言1.盒模型(Box Model) 2.常用控件样式属性1.按钮2.复选框3.单选框4.输入框5.列表6.菜单栏7.注意 1.样式属性 0.前言 QSS中的样式属性⾮常多&#xff0c;不需要都记住&#xff0c;核⼼原则是⽤到了就去查 ⼤部分的属性和CSS是⾮常相似的 QSS中有些属性&am…

稚晖君发布5款全能人形机器人,开源创新,全能应用

8月18日&#xff0c;智元机器人举行“智元远征 商用启航” 2024年度新品发布会&#xff0c;智元联合创始人彭志辉主持并发布了“远征”与“灵犀”两大系列共五款商用人形机器人新品——远征A2、远征A2-W、远征A2-Max、灵犀X1及灵犀X1-W&#xff0c;并展示了在机器人动力、感知、…

爱心商城系统pf

TOC springboot424爱心商城系统pf 第1章 绪论 1.1 课题背景 二十一世纪互联网的出现&#xff0c;改变了几千年以来人们的生活&#xff0c;不仅仅是生活物资的丰富&#xff0c;还有精神层次的丰富。在互联网诞生之前&#xff0c;地域位置往往是人们思想上不可跨域的鸿沟&…

在亚马逊云科技上安全、合规地创建AI大模型训练基础设施并开发AI应用服务

项目简介&#xff1a; 小李哥将继续每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿AI技术解决方案&#xff0c;帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS AI最佳实践&#xff0c;并应用到自己的日常工作里。 本次介绍的是如何在亚马逊云科技利用Servi…

Mac电脑虚拟机安装win11教程

Mac分享吧 文章目录 效果一、准备工作二、安装步骤方法1&#xff1a;使用虚拟机自带的win11系统&#xff0c;选中系统软件--继续--安装&#xff0c;即可完成win11安装方法2&#xff1a;通过下载好的镜像安装Windows11系统。选择镜像文件位置&#xff0c;安装&#xff0c;配置1…