使用QPainter的drawPixmap()绘制多幅图片 good
众所周知,使用QLabel的setPixmap()就可以将图片显示出来,做视屏解码后显示也可以如此。但是为何我今天还要费力使用基函数drawPixmap()来做绘图?理由有这么些吧:
1、使用QLabel很耗费CPU,播放画面过多有卡卡的感觉;
2、drawPixmap()使用GPU处理,相对减轻了CPU的负担;
当然,今天这里,只是给出基本思路方法,并非对视频解码后的图像做原样的解析。
那么,我们开始吧!
a、首先使用Qtcreator建立项目吧,我这里取名Painter,然后我在网上下载了4副图片,个人觉得还是挺漂亮的,一会展示给大家看;
b、下来新建文件夹,名字就叫images吧,此时了,便于使用,最好把图片名字改成便于自己记忆的。然后添加Qt资源,将4副图全部导入资源文件。
c、此时,我们回到项目的ui文件,在设计器里面,拖进来4个QFrame或者QWidget控件,我是拖进来4个QFrame的,因为可以勾划边框;
d、下来对命名后的4个QWidget使用网格布局吧;
e、此时回到paint的.h文件,加上几个头文件:
- #include <QPixmap>
- #include <QPaintEvent>
并在私有属性添加以下:
- QPixmap image1;
- QPixmap image2;
- QPixmap image3;
- QPixmap image4;
在protected方法里面添加:
- void paintEvent(QPaintEvent *);
f、好了,我们回到对应cpp文件吧,首先了,我们已经声明了几个QPixmap,我们需要对这几个变量处理,我在构造函数里:
- image1.load(":/images/chuyin1.jpg");
- image2.load(":/images/chuyin2.jpg");
- image3.load(":/images/chuyin3.jpg");
- image4.load(":/images/chuyin4.jpg");
此时,QPixmap已经与相对应的图片绑定了,下来我们需要让他显示出来:
- void PaintWidget::paintEvent(QPaintEvent *)
- {
- //void QPainter::drawPixmap(int x, int y, int width, int height, const QPixmap &pixmap)
- QPainter painter(this);
- int x1 = ui->view1Frame->pos().x();
- int y1 = ui->view1Frame->pos().y();
- painter.drawPixmap(x1,y1,ui->view1Frame->width(),ui->view1Frame->height(),image1);
- int x2 = ui->view2Frame->pos().x();
- int y2 = ui->view2Frame->pos().y();
- painter.drawPixmap(x2,y2,ui->view2Frame->width(),ui->view2Frame->height(),image2);
- int x3 = ui->view3Frame->pos().x();
- int y3 = ui->view3Frame->pos().y();
- painter.drawPixmap(x3,y3,ui->view3Frame->width(),ui->view3Frame->height(),image3);
- int x4 = ui->view4Frame->pos().x();
- int y4 = ui->view4Frame->pos().y();
- painter.drawPixmap(x4,y4,ui->view4Frame->width(),ui->view4Frame->height(),image4);
- }
划//的部分是专门贴上来让大家知道怎么使用drawpixmap()函数的,当然也可以使用其他的重载。
哦,对了,使用了画笔,怎么不给声明标识?我们在此cpp的头文件里面加上:
- #include <QPainter>
好了,大功告成。编译、运行,你看下面就是显示出来的图像:
怎么样?还不错吧!我们点击标题栏,进行放大,图片也跟着放大了。
http://blog.csdn.net/u010111033/article/details/53785223
使用QPainter的drawPixmap()绘制多幅图片 good的更多相关文章
- QPainter绘制图片填充方式(正常大小、剪切大小、自适应大小、平铺)
Qt中QPainter提供了绘制图像的API,极大地方便了我们对图像的绘制. Qt中提供了QPixmap, QBitmap,QBitMapQImage,QPicture等图像绘图设备,它们的类关系如下 ...
- 利用QPainter绘制各种图形(Shape, Pen 宽带,颜色,风格,Cap,Join,刷子)
利用QPainter绘制各种图形 Qt的二维图形引擎是基于QPainter类的.QPainter既可以绘制几何形状(点.线.矩形.椭圆.弧形.弦形.饼状图.多边形和贝塞尔曲线),也可以绘制像素映射.图 ...
- QT 基本图形绘制
QT 基本图形绘制 1.告诉绘制引擎一些东西 QPainter::Antialiasing 在可能的情况下,反锯齿 QPainter::TextAntialiasing 在可能的情况下,文 ...
- Qt之图形(QPainter的基本绘图)
简述 Qt中提供了强大的2D绘图系统,可以使用相同的API在屏幕和绘图设备上进行绘制,它主要基于QPainter.QPaintDevice和QPaintEngine这三个类. QPainter用来执行 ...
- python数字图像处理(5):图像的绘制
实际上前面我们就已经用到了图像的绘制,如: io.imshow(img) 这一行代码的实质是利用matplotlib包对图片进行绘制,绘制成功后,返回一个matplotlib类型的数据.因此,我们也可 ...
- QT绘制系统简介
#3个类:QPainter,QPainterDevice 和 QPaintEngine 三个类 #qpainter用于执行绘制操作 #QPainterDevice是一个二维空间抽象,允许qpainte ...
- Qt__绘制系统
Qt绘制系统简介 Qt 的绘图系统允许使用相同的 API 在屏幕和其它打印设备上进行绘制.整个绘图系统基于QPainter,QPainterDevice和QPaintEngine三个类. QPaint ...
- python matplotlib.pyplot对图像进行绘制
imshow()是对图像进行绘制 imshow()函数格式为: matplotlib.pyplot.imshow(X, cmap=None) X: 要绘制的图像或数组. cmap: 颜色图谱(colo ...
- Qt 2D绘图之一:基本图形绘制和渐变填充
Qt中提供了强大的2D绘图系统,可以使用相同的API在屏幕和绘图设备上进行绘制,它主要基于QPainter.QPaintDevice和QPaintEngine这三个类.它们三者的关系如下图所示: QP ...
随机推荐
- 用Mochiweb打造百万级Comet应用,第一部分
http://www.iteye.com/topic/267028 原文:A Million-user Comet Application with Mochiweb, Part 1 参考资料:Com ...
- jdk8-collect
toMap 常用方式 public Map<Long, String> getIdNameMap(List<Account> accounts) { return accoun ...
- HSSFWorkBooK用法 ---Excel表的导出和设置
public ActionResult excelPrint() { HSSFWorkbook workbook = new HSSFWorkbook();// 创建一个Excel文件 HSSFShe ...
- javascript学习-创建json对象数据,遍历
之前我已经有讲过后台返回json数据到前台,并在前台遍历json数据. 这里讲下直接在JS里创建JSON数据,然后遍历使用~ 创建代码例如以下:(创建的是JSON对象) var YearSelect ...
- Java编程思想学习笔记-使用显式的Lock对象
若要保证后台线程在trylock()之前运行得到锁,可加“屏障”,如下1,2,3步,而trylock()不管设定时间与否都不会阻塞主线程而是立即返回: //: concurrency/AttemptL ...
- poj 3390 Print Words in Lines 动态规划
意甲冠军: 给n每行长度和字符可放置最大数量字m,每一行产生值至(m-x)^2,x是一个字符上线人数(包含空话之间格).为了让所有的完成,产生的话值最小和. 分析: 动态规划非常重要的就是状态的定义, ...
- Mac版Visual Studio预览版
来了,Mac版Visual Studio预览版开放下载 投递人 itwriter 发布于 2016-11-17 12:11 评论(7) 有1317人阅读 原文链接 [收藏] « » 微软前俩天宣布,推 ...
- ASP.NET Core Razor 标签助手 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core Razor 标签助手 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Razor 标签助手 上一章节我们介绍了视图导入,学习了 ...
- 升级phpstudy2018默认mysql版本到5.7
原文:升级phpstudy2018默认mysql版本到5.7 版权声明:在那最初的相遇中,我们都曾经为彼此心动过... https://blog.csdn.net/weixin_36185028/ar ...
- android 玩愤怒的小鸟等游戏的时候全屏TP失败
1.tp driver的tpd_down()和tpd_up()函数不需要进行报告id号码.自己主动顶级赛: 2.tpd_up()功能只需要报告BTN_TOUCH和mt_sync信息,其他信息未报告,如 ...