Qt显示图片的几种方式以及耗时比较
一.前言Qt作为GUI图形库的选择之一,图片的显示有时候也尤为重要。例如背景的显示,icon的显示等等。这里我们来探讨一下Qt的几种图片显示方式和时间消耗。二.Qt图片显示1.painter,这个作为Qt的基础绘画大师,能绘制各种规则不规则的图形,当然显示图片也不在话下。...
一.前言
Qt作为GUI图形库的选择之一,图片的显示也就尤为重要。例如背景的显示,icon的显示等等。这里我们来探讨一下Qt的几种图片显示方式和时间消耗。
二.Winows下图片显示
这里我们绘制一张1440*900的图片进行演示,演示硬件环境为:Win10 64位系统 + i3-8100 CPU
1.QPainter
这个作为Qt的基础绘画大师,能绘制各种规则不规则的图形,当然显示图片也不在话下。
QPainter painter(this);
painter.drawPixmap(this->rect(),QPixmap(":/timg.jpg"));
绘制耗时结果:47ms ,后面显示的0十是因为图片没有变化没有重新绘制。
2.QPalette
QPalette palett;
palett.setBrush(QPalette::Background,QBrush(QPixmap(":/timg.jpg")));
this->setPalette(palett);
this->setAutoFillBackground(true);
绘制耗时结果:45ms
3.QLabel(QPixmap、stylesheet)
//采用setPixmap进行图片绘制
QLabel *bgPix = new QLabel(this);
bgPix->setPixmap(QPixmap(":/timg.jpg"));
bgPix->adjustSize();
//采用样式表进行绘制
//bgPix->resize(1440,900);
//bgPix->setStyleSheet("background-image:url(:/timg.jpg);");
绘制耗时结果:俩种方法对于QLabel耗时都差不多 44-45ms
4.QWidget(stylesheet)
//不能是最基础父窗口否则不显示,适合子窗口显示
QWidget *win = new QWidget(this);
win->resize(1440,900);
win->setStyleSheet("border-image:url(:/timg.jpg);");
win->show();
绘制耗时结果: 44-45ms
通过4种法比较,windows下绘制一张图片耗时大致基本一致,都在44-47ms之间。而用qpainter耗费时间要略多一ms左右。其他3种方法耗时基本一样。由于数据太接近很难比较出几种方法的耗时优劣。
除此之外,QPushButton也有一个setIcon函数,也可以设置图片进行显示,这个不再演示,也不适合做大图片显示。
三.ARM-Linux下图片显示
以上是window下绘制一张图片耗时结果,接下来我们来研究下ARM平台绘制。arm平台的硬件环境:
CPU:800Mhz 双核,不带opengl硬加速绘制。
绘制方式 | 耗时结果 |
---|---|
QPainter | 280-350ms |
QPalette | 260-270ms |
QLabel | 260-275ms |
QWidget | 265-280ms |
ARM平台几种方法的绘制耗时大致排序是:QPainter>QWidget>QLabel>QPalette,
QPalettede的绘制耗时最少。
以上我们主要展示了4种绘制图片的方法,至于耗时不能做绝对的参考,应该结合实际的绘制环境,是否CPU绘制、是否GPU渲染都可能影响绘制过程。
作者:费码程序猿
欢迎技术交流:QQ:255895056
转载请注明出处,如有不当欢迎指正
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)