初识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用于图片显示的窗口
用于图片显示的窗口 国产化
随机推荐
- c#如何禁用win7的任务管理器
以前制作的桌面锁屏软件虽然也禁用过任务管理器,但是采取的是比较笨的方法,而且对操作系统还有一定的危害.因为任务管理也是一个窗体也就是说它中也是一个独立进程,所以只需要强制性关闭这个进程即可以关闭任务管 ...
- Python手写模拟单向链表对象,栈对象和树
单向链表: class error(Exception): def __init__(self,msg): super(error,self).__init__() self.msg=msg def ...
- BZOJ4144: [AMPPZ2014]Petrol(最短路 最小生成树)
题意 题目链接 Sol 做的时候忘记写题解了 可以参考这位大爷 #include<bits/stdc++.h> #define Pair pair<int, int> #def ...
- PHP CURL库学习
基本请求步骤 : // . 初始化 $ch = curl_init(); // . 设置选项,包括URL curl_setopt($ch, CURLOPT_URL, "http://www. ...
- opencv图像处理基础 (《OpenCV编程入门--毛星云》学习笔记一---五章)
#include <QCoreApplication> #include <opencv2/core/core.hpp> #include <opencv2/highgu ...
- React-Native开发之原生模块封装(Android)升级版
本文主题:如何实现原生代码的复用,即如何将原生模块封装. (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/52862 ...
- 解决升级PHP7.1后,发邮件时提示“fsockopen(): Peer certificate CN=`xxx.xx.com' did not match expected CN=`113.x.xx.98”
把项目环境升级到PHP7.1后,发现在不使用SSL时可以使用IP发邮件,可设置成SSL时就只能使用hostname发送,PHP提示的错误信息大致意思是说,IP与hostname无法通过SSL验证,修改 ...
- 安装android-sdk,gradle mac 篇
安装包管理器 Homebrew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/insta ...
- Html.Partial()传值的问题
@Html.Partial("Test", Model, new ViewDataDictionary { { "a", "b" } }); ...
- Oracle重启操作步骤
有时候在服务中重启了oracle之后,数据库并不能正常访问,可以通过以下步骤: 在windows服务中启动数据库服务: 在windows命令窗口中输入命令:sqlplus /nolog 在sql> ...