初识Qt图片显示、平移及旋转
1、新建一个Qt Gui应用,项目名称为myPicture,基类选择为QMainWindow,类名设置为MainWindow。
2、在mainwindow.h头文件中添加void paintEvent(QPaintEvent *);绘图事件函数
3、在mainwindow.cpp文件中添加如下代码段,同时头文件中添加#include<QPainter>
void MainWindow::paintEvent(QPaintEvent *)
{ QPainter painter(this);
QPixmap pix;
pix.load("../myPicture/top.png");//将图片置于项目的根目录
//图一
painter.drawPixmap(, , , , pix);//图片尺寸22乘以22,设置大小不一样的话,图片会自动伸缩
//图二
painter.translate(, ); //将(100, 100)设为坐标原点
painter.drawPixmap(, , , , pix);//图片以(100, 100)为原点
//图三
qreal width = pix.width(); //获得以前图片的宽
qreal height = pix.height();//获得以前图片的高
pix = pix.scaled(width*, height*, Qt::KeepAspectRatio);//将图片的宽和高都扩大两倍,并且在给定的矩形内保持宽高的比值不变
painter.drawPixmap(, ,pix);//继续以前面设置好的(100, 100)为坐标原点
//图四
painter.translate(, ); //再次设置新的(100,100)为坐标原点,相对于最开始的坐标原点(0, 0)来说,此处相当于(200, 200)
painter.rotate(); //顺时针旋转90度
painter.drawPixmap(, , , , pix);//注意此处的坐标要写成(0, 0),即在新坐标原点放置旋转后的图片
//图五
painter.shear(0.5, 0.1); //横向扭曲0.5,纵向扭曲0.1,值越大,扭曲程度越大
painter.drawPixmap(-, -, , , pix);//前面设置的反转属性没有更改,实际是将整个坐标系进行了180度反转,因此,向右下方移动为负x负y
//图六
painter.shear(-0.5, -0.1); //若想后面的图形不再扭曲,要进行前面扭曲的相反设置
painter.drawPixmap(-, -, , , pix);//前
}
4、运行结果显示如下

附:图片伸缩后的宽高设置属性

其中:IgnoreAspectRatio:图片宽高比适应给定好的矩形大小
KeepAspectRatio:在给定的矩形中,保持图片宽高比前后不发生变化
KeepAspectRatioByExpanding:图片宽高比保持不变,但可能超出矩形大小
Qt::IgnoreAspectRatio是不保持图片的宽高比,Qt::KeepAspectRatio是在给定的矩形中保持宽高比,最后一个也是保持宽高比,但可能超出给定的矩形。
初识Qt图片显示、平移及旋转的更多相关文章
- Qt图片显示效率的比较 转
转http://blog.sina.com.cn/s/blog_5c70dfc80100r257.html 在Qt中处理图片一般都要用到QImage类,但是QImage的对象不能够直接显示出来,要想能 ...
- Qt图片显示
1.图片截取指定大小 void Setting_TabProduct::changeImageSize(int width,int height,QString imgFile) { QPixmap ...
- c#图片的平移与旋转
1新建文件夹,添加一个图片 2 添加控件 两个button控件 一个image控件 一个Canvas控件 3 代码实现 using System;using System.Collections.Ge ...
- QT中显示GIF图片
在QT中要显示GIF图片,不能通过单单的添加部件来完成. 还需要手动的编写程序. 工具:QT Creator 新建一个工程,我们先在designer中,添加一个QLabel部件. 如下图: 将QLab ...
- Qt添加窗口背景图片、Label图片显示、、Label文字显示
一.添加窗口背景图片 重写MainWindow绘制事件 void MainWindow::paintEvent(QPaintEvent *event) { QPainter painter(this) ...
- QT图片旋转
目前发现有两种方法,如下: 1.使用QPixmap的transformed函数旋转,这个函数默认是以图片中心为旋转点,不能随意设置旋转点,使用如下: QMatrix leftmatrix; leftm ...
- OpenCV【2】---读取png图片显示到QT label上的问题
问题一: 操作图片test.png是一个365x365的PNG图片 通过OpenCV自带的GUI显示出来图像是没问题的,例如以下操作代码所看到的: QStringfileName=QFileD ...
- QT开发实战一:图片显示
测试平台 宿主机平台:Ubuntu 12.04.4 LTS 目标机:Easy-ARM IMX283 目标机内核:Linux 2.6.35.3 QT版本:Qt-4.7.3 Tslib版本:tslib-1 ...
- qt用于图片显示的窗口
用于图片显示的窗口 国产化
随机推荐
- less之旅
在遇到less之前,一直和css交往,当less出现在我码农生涯的时候,被她给深深地吸引.从此,less成了自己码农生活里面的一房,css退居二房!那么,less到底有什么魅力让我如此迷上她呢? le ...
- Jquery实现可拖动进度条demo
html <div class="progress"> <div class="progress_bg"> <div class= ...
- Eclipse工程 导入 Android Studio
最近Eclipse好多项目转Android Studio 百度翻看好多文章 这篇不错 特纪录下 地址:http://www.cnblogs.com/bluestorm/p/3757402.html 一 ...
- arcgis10.3下载,arcgis pro的下载地址
链接:http://pan.baidu.com/s/1eQ2BkCM 密码:fmkh
- Java 接口和多态
接口 1.1 接口的概述 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成.这样 ...
- android开启线程的误区
发现一些刚学android的人,和我当初一样,对android的线程会存在着一定误区. 在android中,开启新线程时,一些人会用以下方法: new Handler().post(r); 但是这样并 ...
- Android:Gradle sync failed: Another 'refresh project' task is currently running for the project
android studio 克隆项目后,重新导入后显示Gradle sync failed: Another 'refresh project' task is currently running ...
- linux客户端打印报表时操作系统的配置
报表打印是用applet方式操作的,所以客户端要有jre环境.如果客户端是windows系统的话,安装jre环境比较方便:如果客户端是linux系统的话,即使服务器端reportConfig.x ...
- frame shiro 授权及原理简述
shiro 授权模式 shiro采用的是rbac授权模式rbac,基于角色的权限管理,谁扮演什么角色,被允许做什么事情. shiro 授权流程 shiro 授权方式 1.编程式 通过写if/else授 ...
- Pig join用法举例
jnd = join a by f1, b by f2; join操作默认的是内连接,只有两边都匹配才会保留 需要用null补位的那边需要知道它的模式: 如果是左外连接,需要知道右边的数据集的 ...