当前位置: 首页 > news >正文

【QT】label中添加QImage图片并旋转(水平翻转、垂直翻转、顺时针旋转、逆时针旋转)

目录

0.简介

1.详细代码及解释

1)原label显示在界面上

2)水平翻转

3)垂直翻转

4)顺时针旋转45度

5)逆时针旋转


0.简介

环境:windows11 + QtCreator

背景:demo,父类为QWidget,界面上有一个label,label中有一个QImage图片,本文主要介绍将QImage图片进行水平翻转、垂直翻转、顺时针旋转和逆时针旋转,详见下文

1.详细代码及解释

1)原label显示在界面上

我的图片只是随便起了个名字【bird.jpg】,事先放在了资源文件中

以下主要代码是在【mainwindows.cpp】类中实现的

    QImage image(":/bird.jpg");QLabel *lb = new QLabel(this);lb->setFixedSize(500,500);lb->setPixmap(QPixmap::fromImage(image));lb->show();

2)水平翻转

//水平翻转
QImage horFilp(const QImage &image){QImage horFilp = image.mirrored(true,false);return horFilp;
}
    QImage image(":/bird.jpg");QImage horFilpImage = horFilp(image);//调用水平翻转QLabel *lb = new QLabel(this);lb->setFixedSize(500,500);lb->setPixmap(QPixmap::fromImage(horFilpImage));lb->show();

以上代码结构在实际项目中的位置如下图:

3)垂直翻转

//垂直翻转
QImage verFilp(const QImage &image){QImage verFilp = image.mirrored(false, true);return verFilp;
}
    QImage image(":/bird.jpg");QImage verFilpImage = verFilp(image);//调用垂直翻转QLabel *lb = new QLabel(this);lb->setFixedSize(500,500);lb->setPixmap(QPixmap::fromImage(verFilpImage));lb->show();

以上代码结构在实际项目中的位置如下图:

4)顺时针旋转45度

//旋转
QImage rotateImageDegrees(const QImage &image, const int &degrees){QTransform trans;trans.rotate(degrees);QImage rotatedImage = image.transformed(trans, Qt::SmoothTransformation);return rotatedImage;
}
    QImage image(":/bird.jpg");QImage rotatedImage = rotateImageDegrees(image, 45);//顺时针旋转QLabel *lb = new QLabel(this);lb->setFixedSize(500,500);lb->setPixmap(QPixmap::fromImage(rotatedImage));lb->show();

以上代码结构在实际项目中的位置如下图:

5)逆时针旋转

同顺时针,调用的是同一个函数,只不过在调用的时候,需要将参数设置为负

如顺时针是45,逆时针则为-45

QImage rotatedImage = rotateImageDegrees(image, 45);//顺时针旋转
QImage rotatedImage = rotateImageDegrees(image, -45);//逆时针旋转

--END--

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 观察者模式实战:Spring Boot中联动更新机制的优雅实现
  • 单链表<数据结构 C版>
  • Ubantu 使用 docker 配置 + 远程部署 + 远程开发
  • 【JavaScript 算法】贪心算法:局部最优解的构建
  • JVM(day2)经典垃圾收集器
  • C++:类的定义和实例化
  • 云微客如何实现低成本快速获客?AI矩阵来传播
  • Linux-交换空间(Swap)管理
  • 第三章 OSPF高级
  • JuiceFS缓存特性
  • GitHub私有派生仓库(fork仓库) | 派生仓库改为私有
  • 尚硅谷大数据技术-数据湖Hudi视频教程-笔记03【Hudi集成Spark】
  • uni-app学习HBuilderX学习-微信开发者工具配置
  • 前端Canvas入门——用canvas写五子棋?
  • 【python学习】爬虫中常使用的urllib和requests库的的背景、定义、特点、功能、代码示例以及两者的区别
  • 【刷算法】求1+2+3+...+n
  • C语言笔记(第一章:C语言编程)
  • Hibernate最全面试题
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • 程序员该如何有效的找工作?
  • 讲清楚之javascript作用域
  • 我这样减少了26.5M Java内存!
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​人工智能书单(数学基础篇)
  • (1)(1.11) SiK Radio v2(一)
  • (1)bark-ml
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (pycharm)安装python库函数Matplotlib步骤
  • (定时器/计数器)中断系统(详解与使用)
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (十六)Flask之蓝图
  • (一)、软硬件全开源智能手表,与手机互联,标配多表盘,功能丰富(ZSWatch-Zephyr)
  • (转)Sublime Text3配置Lua运行环境
  • (自适应手机端)响应式服装服饰外贸企业网站模板
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .NET开源、简单、实用的数据库文档生成工具
  • .Net转前端开发-启航篇,如何定制博客园主题
  • ::
  • @Builder用法
  • @RequestMapping处理请求异常
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [BZOJ4337][BJOI2015]树的同构(树的最小表示法)
  • [C++]模板与STL简介
  • [Contiki系列论文之2]WSN的自适应通信架构
  • [Deepin] 简单使用 RustDesk 实现远程访问Deepin
  • [flink总结]什么是flink背压 ,有什么危害? 如何解决flink背压?flink如何保证端到端一致性?
  • [Flutter] extends、implements、mixin和 abstract、extension的使用介绍说明
  • [LeetCode] NO. 387 First Unique Character in a String
  • [Linux] day07——查看及过滤文本