QImage 类的基本操作

2023-11-03

一、显示方法(两种):第一种更佳

1、QImage转QPixmap,然后用QLabel::setPixmap()

1

2

3

4

5

6

7

image=new QImage("D:/Temp/XX.jpg");

 

pixmap=newQPixmap();

pixmap->convertFromImage(*image);

label=newQLabel(this);

label->setGeometry(100,0,1000,700);

label->setPixmap(*pixmap);

2、在paintEvent()中直接画

1

2

3

4

5

void MyWindow::paintEvent(QPaintEvent*)

{

QPainter paint(this);

paint.drawImage(0,0,*image);

}

二. 图像缩放

图像缩放采用scaled函数。函数原型

QImage QImage::scaled ( const QSize & size,Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationModetransformMode = Qt::FastTransformation ) const

使用方法如下,还是利用上面的img:

QImage* imgScaled = new QImage;
*imgScaled=img->scaled(width,
                       height,
                       Qt::KeepAspectRatio);
ui->label->setPixmap(QPixmap::fromImage(*imgScaled));

scaled函数中width和height表示缩放后图像的宽和高,即将原图像缩放到(width,height)大小。

三. 图像旋转

图像旋转可以利用QImage类的transformed函数,向transformed函数传入QMatrix对象,QMatrix对象指定了旋转的角度。

代码如下:

QImage* imgRatate = new QImage;
QMatrix matrix;
matrix.rotate(270);
*imgRotate = img->transformed(matrix);
ui->label->setPixmap(QPixmap::fromImage(*imgRotate));

注意:rotate函数中参数是旋转的角度,旋转是按顺时针方向旋转的,上面顺时针旋转270度,即逆时针旋转90度。

四. 图像连续缩放
有了图像缩放的基础,就可以实现图像的连续缩放,可以放置一个横向滑竿(中文解释不标准,就是Horizontal Slider部件 ),滑动滑轮的位置以实现图像连续缩放。

Horizontal Slider部件指向的值为整型value,即缩放后的图像为

img->scaled(orignalWidth*value/100,
                         orignalHeight*value/100,
                         Qt::KeepAspectRatio);

orignalWidth和orignalHeight为原始图像的宽和高。

注意:在对原始图像进行缩放多少倍数时,在相应的槽函数内只需要调用Horizontal Slider部件对象的setValue函数即可,因为Horizontal Slider部件滑竿指向的值一旦变化就会触发对应的槽函数来对图像进行缩放。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QImage 类的基本操作 的相关文章

随机推荐

  • Spring事务的传播行为REQUIRES_NEW和REQUIRED区别

    事务的传播特性指的是当一个事务方法被另一个事务方法调用时 这个事务方法应该如何进行 spring的事务传播行为一共有7种 备注 上面图是从其他博客截取的 忘记链接了 应用场景 A方法中调用B和C方法 其中BC都进行 1操作 括号中的报错意思
  • 华为OD机试真题-光伏场地建设规划【2023Q1】【JAVA、Python、C++】

    题目描述 祖国西北部有一片大片荒地 其中零星的分布着一些湖泊 保护区 矿区 整体上常年光照良好 但是也有一些地区光照不太好 某电力公司希望在这里建设多个光伏电站 生产清洁能源 对每平方公里的土地进行了发电评估 其中不能建设的区域发电量为0k
  • python安装时间过长_python走过的坑(关于python、pip安装)

    第一个坑 python2 or python3 how to choose 变化不大看你目前的研究方向的库支持 python的编辑器选择问题 IDLE Subline text 这属于文本编辑器 pycharm Anaconda IDE集成
  • 【Unity小游戏】游戏开发案例,轻松打造一款塔防游戏!(下)

    欢迎来到如何在 Unity 中创建塔防游戏的第二部分 你正在Unity中制作一个塔防游戏 在第一部分结束时 你可以放置和升级怪物 你还有一个敌人攻击饼干 然而 敌人不知道该面对哪条路 此外 这是攻击的一个严重的失误 在这一部分中 你将添加敌
  • [转载]OpenWRT UCI API的使用

    OpenWRT UCI API的使用 分类 OpenWRT C 2014 03 09 21 51 3551人阅读 评论 4 收藏 举报 目录 原文 http blog csdn net bywayboy article details 20
  • 阿里测试8年,肝到P8只剩他了····

    在阿里工作了8年 工作压力大 节奏快 但是从技术上确实得到了成长 尤其是当你维护与大促相关的系统的时候 熬到P7也费了不少心思 小编也是个爱学习的人 把这几年的工作经验整理成了一份完整的笔记 此笔记已助朋友拿到腾讯 阿里 美团等10个off
  • Python表白代码合集:5种表白代码,找不到对象你来找我,这也太秀了叭

    文章目录 一 容我啰嗦两句 二 来吧 代码展示 1 给女神比个小心心 2 无限弹窗式表白 3 这货不是表白代码 悄悄送给你们 4 520表白墙 5 抖音热门表白小软件 6 无套路表白 三 写在最后 一 容我啰嗦两句 爬虫看多了 对身体不好
  • 在win7中chm打不开的最佳方法

    我今天遇到了个非常棘手的问题 想看看资料 却打不开chm帮助文件 我装的是64位win7 打开chm文件时 系统提示我安全问题 强行打开 却无法显示内容 得到的提示是 该页导航被取消 郁闷啊 头痛啊 怎么办啊 急急如火令 只有找Google
  • uni-app 自定义webview大小

    在uni app中使用web view 组件 默认铺满全屏并且层级高于前端组件 会遮挡页面上的其他组件 在官网中写明 app vue下web view组件不支持自定义样式 默认充满屏幕不可控制大小 nvue web view 必须指定样式宽
  • Unity3D 如何在ECS架构下,用Unity引擎进行游戏开发详解

    前言 Unity3D是一款强大的游戏引擎 它提供了丰富的功能和工具 可以帮助开发者快速构建高质量的游戏 而Entity Component System ECS 是Unity3D中一种新的架构模式 它可以提高游戏的性能和可扩展性 本文将详细
  • go操作excelize报表框架

    Excelize系统设计 养成习惯 再看 源码在文章后面 写在前面 感谢go社区的excelize框架 https github com 360EntSecGroup Skylar excelize 版本说明 这个版本只是第一版 简单利用了
  • 计算0到100中所有含有6的数之和(注意不要生复算66)(用与10取模计算出各位有6的数,用除10 计算十位有6的数)

    import
  • DHCP的概念和原理

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 一 什么是DHCP 1 dhcp的作用 2 DHCP工作原理 3 DHCP服务器为客户端分配IP地址有三种形式 4 DHCP的好处 5 DHCP种的租期 6 DHC
  • 服务端授权工具可做跟单和程序化交易源码

    源码介绍 MT4行情抓取工具 用vc 开发 源码全开放 速度飞快 功能稳定 界面显示订阅代码的实时数据 直观 操作简单 可以灵活修改 添加订阅代码 订阅需要的行情数据 可用unifeed协议给MT4服务端做数据源 也可以自己修改数据输出格式
  • 58 openEuler搭建Mariadb数据库服务器-管理数据库

    文章目录 58 openEuler搭建Mariadb数据库服务器 管理数据库 58 1 创建数据库 58 2 查看数据库 58 3 选择数据库 58 4 删除数据库 58 5 备份数据库 58 6 恢复数据库 58 openEuler搭建M
  • BLE 蓝牙的一些心得总结

    1 TI 的CC2541协议栈开发教程 https blog csdn net feilusia category 5630377 html 2 以下是我对BLE 蓝牙的一些理解 如果有什么不对的地方 恳请大佬们指点
  • java源码分析-native方法的调用

    java源码分析 native方法的调用 这段时间在分析java源码时 经常能看到很多的底层源码中都调用了被native关键字修饰的方法 也就是java调用本地方法 但是在进行debug时有进不去 看不了具体的实现 因为这写方法是用c c
  • string字符串查找和替换

    字符串的查找 string find 函数 这个函数比较容易理解 就是按照string 的正顺序往后进行对比 查找str第一次出现的位置 如果可以找到 则返回在sring的位置 不能找到的话 返回 1 因此我们可以写一个if函数进行判断 v
  • VsCode中好用的git源代码管理插件GitLens

    git多人协作的时候需要查看日志 如果能在当前代码中查看到那是很方便的一件事 能省去很多时间去其他工具查看 提高工作效率 VsCode中的GitLens插件刚好能满足这个需求 而且搭配Cmder使用 很舒服 不会出现换行不工整的问题 还可以
  • QImage 类的基本操作

    一 显示方法 两种 第一种更佳 1 QImage转QPixmap 然后用QLabel setPixmap 1 2 3 4 5 6 7 image new QImage D Temp XX jpg pixmap newQPixmap pixm