【QT5】QPixmap的使用
QPixmap主要用于绘图,针对图像显示而最佳化设计;
QImage主要是为图像I/O、图像访问及像素修改而设计。但若用QPixmap加载大图片的时候,会占用很大内存,适合加载小图片;一个几十K的图片,加载进来后会放大很多倍。
若图片过大,可用QImage进行加载,然后转成QPixmap用户绘制,QPixmap绘制效果最好。
1.使用QPixmap显示图片
void Dialog::paintEvent(QPaintEvent *)
{QPainter painter(this);QPixmap pix;pix.load(“D:/1.jpg”);painter.drawPixmap(0,0,50,50,pix); //在(0,0)点起始的宽高均为50的句型中显示图片painter.translate(50,50); //将起始点改为(50,50)painter.drawPixmap(0,0,50,50,pix); //在(50,50)起始的宽高为50的矩形中显示图片
}
2.使用QPixmap实现图片的缩放
可使用QPixmap类中的scaled()函数对图像进行放大或缩小。该函数可以根据指定的模式,返回按比例缩放为具有给定宽度和高度的矩形的大小。
void Dialog::paintEvent(QPaintEvent *)
{QPainter painter(this);QPixmap pix;pix.load(“D:/1.jpg”);painter.drawPixmap(0,0,50,50,pix); //在(0,0)点起始的宽高均为50的句型中显示图片qreal wid = pix.width(); //获取图像的宽高qreal hei = pix.height();pix = pix.scaled(wid*2,hei*2,Qt::KeepAspectRatio);//将图片宽高扩大两倍,且在矩形内保持宽高比值painter.drawPixmap(50,50,pix);
}
参数Qt::KeepAspectRatio,是图片缩放的方式,其含义在给定矩形中保持图片长宽比;
参数Qt::IgnoreAspectRatio,其含义是不保持图片长宽比;
参数Qt::KeepAspectRatioByExpanding,其含义是保持图片长宽比,但可能超出给定的矩形。
3.使用QPixmap实现图像的旋转
可使用QPainter类的rotate()函数实现图像旋转,其默认是以原点为中心进行旋转。
void Dialog::paintEvent(QPaintEvent *)
{QPainter painter(this);QPixmap pix;pix.load(“D:/1.jpg”);painter.translate(50,50); //将旋转中心改为(50,50)painter.rotate(90); //顺时针旋转90度painter.translate(-50,-50); painter.drawPixmap(0,0,50,50,pix);
}
必须先改变旋转中心,然后再旋转,然后再将原点复原,才能达到想要的效果。
4.使用QPixmap实现图像的扭曲
使用的QPainter类的shear(qreal sh,qreal sv)函数,可以实现图片的扭曲。参数1实现横行变形,参数2实现纵向变形。当它们的值为0时,表示不扭曲。
图像形状的变化是利用坐标系的变化实现的。
void Dialog::paintEvent(QPaintEvent *)
{QPainter painter(this);QPixmap pix;pix.load(“D:/1.jpg”);painter.drawPixmap(0,0,50,50,pix); painter.shear(0.5,0) ;//横向扭曲painter.drawPixmap(50,0,50,50,pix); painter.shear(0,0.5);//纵向扭曲painter.drawPixmap(0,50,50,50,pix); painter.shear(0.5,0.5);//同时横纵扭曲painter.drawPixmap(50,50,50,50,pix);
}
【QT5】QPixmap的使用相关推荐
- PySide2中使用QLabel的setPixmap方法显示图片,部分图片无法显示
之前一直是用PyQt5的,最近的项目由于担心开源协议的问题,开始使用PySide2,没想到在简单的图片显示上就出现了问题. 问题的表现是这样的,对于有的.jpg图片,使用PyQt5是完全可以正常显示的 ...
- Qt5基础 Qimage与QPixmap的转换
Qt5基础系列 Qt基础的学习笔记.此文章为在B站上学习黑马程序员Qt教程的Qimage与QPixmap之间的转换部分做的记录,加深理解,方便回看. 目录 Qt5基础系列 一.简介 二.Qimage与 ...
- Qt5.15.2 Cmake Clion下如何使用QPixmap显示JPG图片
在Main.cpp的文件下,Main 函数的第一行加入: QApplication::addLibraryPath(R"(C:\Qt\5.15.2\mingw81_64\plugins)&q ...
- QT5实践:菜单窗口实现图像打开浏览、存盘
一.从本代码中学到什么? 以下代码实现功能有: 1 菜单画出 2 菜单事件响应 3 文件对话框 4 显示图片 5 图片放大缩小 二. 实现代码 from PyQt5.QtCore import QDi ...
- qt 字体不随dpi_Windows – QT5字体渲染在各种平台上不同
我想对某些自定义小部件渲染进行可重复的测试.为了做到这一点,我将它们绘制成一个Q Image,并将结果保存为PNG.与MacOSX相比,Windows的输出真的不同. 我照顾: >在所有平台上选 ...
- python opencv pdf脚本之家_OpenCV 3和Qt5计算机视觉应用开发 PDF 影印含源码版
给大家带来的一篇关于计算机视觉相关的电子书资源,介绍了关于OpenCV3.Qt5.计算机视觉.应用开发方面的内容,本书是由机械工业出版社出版,格式为PDF,资源大小117.2 MB,阿敏·艾哈迈迪·泰 ...
- QT5开发及实例学习之十七Qt5双缓冲机制
文章目录 一.原理与设计 二.绘图区的实现 三.主窗口的实现 一.原理与设计 所谓双缓冲机制,是指在绘制控件时,首先将要绘制的内容绘制在一个图片中,再将图片一次性地绘制到控件上.在早期的 Qt 版 ...
- QT5开发及实例学习之十一Qt5文件操作功能
文章目录 一.新建文件 二.打开文件 三.打印文件 1. 文本打印 2. 图像打印 一.新建文件 实现新建文件功能的函数 showNewFile() 如下: void ImgProcessor:: ...
- Ubuntu18.04中配置QT5.11开发环境
准备工作 参考 https://wiki.qt.io/Install_Qt_5_on_Ubuntu . # 安装g++ sudo apt install build-essential # sudo ...
最新文章
- python any()和all()
- Navicat 复制多条数据
- java 一次CPU占用过高问题的排查及解决,java基础面试笔试题
- MFC笔记:初始化tab控件一点改进
- skala view android,Skala Preview for mac
- 简单的用堆栈实现的表达式计算
- itexpdf同一个段落不同文字,如何设置不同的格式
- uboot驱动模型(DM)分析(二)
- 【图像去噪】基于matlab GUI均值+中值+高斯低通+多种小波变换图像去噪【含Matlab源码 856期】
- 2018年下半年系统集成项目管理工程师真题及答案解析
- 一些模板(按字典序排序)
- Java 线程池常见误区
- 招行金葵花,经典白,银钻,AE白问题总结贴
- 151202storyboard中, 设置子控件和父控件的高宽比
- 小雷的冰茶几---3386
- springdatajpa之初识hibernate(一)
- NFS共享服务搭建详细流程
- 软文营销拒绝一成不变用故事建立情感依恋
- 2014中国CRM与商业IT展览会(上交会专题)
- html 英文自动换行,CSS让英文单词的自动换行
热门文章
- 女人都需要学会的四种气质
- Emotet银行木马新增提取电子邮件功能,分析能力升级
- Vue生命周期执行顺序
- egg.js开发 文章发布接口(图片上传)(表单数据接口)
- firebase 云推送_使用Firebase云消息传递在Android中推送通知
- 新计算机设置,请问新电脑怎样设置BIOS????
- RERAN:安卓系统的定时和点击的录制和回放——(5)
- 香港中文大学(深圳)李海洲/王本友教授招收大模型方向的博士生(2023Fall/2024SpringFall),研究助理和博后
- pwnable.kr之passcode
- Python 最简单的实例:手机通讯录