问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

QT 三大绘图类:QPixmap/QImage/QPicture

发布网友 发布时间:2022-12-17 01:32

我来回答

1个回答

热心网友 时间:2023-09-12 21:22

QPixmap 、 QImage 、 QPicture 都是 QPaintDevice 的子类。

QPixmap 的设计本来就是用来加速显示,用 paint 绘图时用 QPixmap 会比其他类的效果好很多。一般小图片用 QPixmap 。

QPixmap 也可以接受一个字符串作为一个文件的路径来显示这个文件,比如你想在程序之中打开 BMP、GIF、JPG、JPEG、PNG 等文件,就可以使用 QPixmap 。使用 QPainter 的 drawPixmap() 函数可以把这个文件绘制到一个 QLabel 、 QPushButton 或者其他的设备上面。 QPixmap 是针对屏幕进行特殊优化的,因此,它与实际的底层显示设备息息相关。注意,这里说的显示设备并不是硬件,而是操作系统提供的原生的绘图引擎。所以,在不同的操作系统平台下, QPixmap 的显示可能会有所差别。 QPixmap 提供了静态的 grabWidget() 和 grabWindow() 函数,用于将自身图像绘制到目标上。同时,在使用 QPixmap 时,你可以直接使用传值也不需要传指针,因为 QPixmap 提供了“隐式数据共享”,即传递 QPixmap 不必须使用指针。

更多参考: QPixmap

QBitmap 继承自 QPixmap ,因此具有 QPixmap 的所有特性。 QBitmap 的色深始终为 1. 色深这个概念来自计算机图形学,是指用于表现颜色的二进制的位数。我们知道,计算机里面的数据都是使用二进制表示的。为了表示一种颜色,我们也会使用二进制。比如我们要表示8种颜色,需要用 3 个二进制位,这时我们就说色深是 3. 因此,所谓色深为 1,也就是使用 1 个二进制位表示颜色。1 个位只有两种状态:0 和 1,因此它所表示的颜色就有两种,黑和白。所以说, QBitmap 实际上是只有黑白两色的图像数据。由于 QBitmap 色深小,因此只占用很少的存储空间,所以适合制作游标( QCursor )或者笔刷( QBrush )。

既然依赖软件,那么就不需要用硬件 GUI 的线程了,可以开个软件的线程,可提高用户 UI 体验。

例子:

QImage 使用 Qt 自身的绘图引擎,可提供在不同平台上相同的图像呈现效果,并可通过 pixel() 、 setPixpel() 等方法直接存取和修改指定的像素。

QPicture 是一个绘画设备类,它记录了并可以重演 QPainter 的命令。你可以使用 QPainter 的 begin() 方法,指定在 QPicture 上绘图,使用 end() 方法结束绘图,使用 QPicture 的 save() 方法将 QPainter 所使用过的绘图指令存至档案。要重播绘图指令的话,建立一个 QPicture ,使用 load() 方法载入绘图指令的档案,然后在指定的绘图装置上绘制 QPicture 。

记录绘制的图形:

接着便可在您的绘图设备重画已经保存的图形:

更多参考: QPicture¶

QPixmap 跟硬件是相关的,如 X11, Mac 以及 Symbian 平台上, QPixmap 是存储在服务器端,而 QImage 则是存储在客户端,在 Windows 平台上, QPixmap 和 QImage 都是存储在客户端,并不使用任何的GDI资源。

在 X11, Mac 以及 Symbian 平台上,因为 QImage 是存储在客户端,往 QImage 上绘图比较快,但显示它则比较慢。因为 QPixmap 是存储在服务器端,往 QPixmap 上绘图比较慢,但显示它则比较快。但在 Windows 平台上则是是一样的,因为它们都存储在客户端。

QImage 是设计并优化来为 I/O操作的,可以直接访问和操作像素,而 QPixmap 是设计并优化来在屏幕上显示图片的。 QBitmap 仅是继承自 QPixmap 的一个方便使用的类,是为了确保图片的深度为1。 QPicture 是绘图设备,可以用来重现 QPainter 命令。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
钢琴谱一小段有三行怎么弹?最上是高音,然后还是高音,最后是低音?我用来... 请问跨专业考研都需要哪些方面的准备啊? 2013109期福彩双色球开奖号码 vivoy3手机如何长截屏 男友贪污也是网上追逃犯我还可以和他在一起吗 网上追逃犯罪嫌疑人住家里算是窝藏或是包庇吗 ps3海贼无双普通版有下载卡的吗? 关于PS3版海贼王无双和北斗神拳无双 PS3现在海贼无双3.55破解能玩了吗 我看网上说有破解补丁 谁能给个地址... 现在网上下载得到PS3的海贼无双。铁拳6,。高达无双3等游戏吗 qt实现多张图片的切换不使用ui控件 如何在Qt中把一个map声明称一个成员变量 QT中怎么直接调map.second中的数据 塘厦中信观澜凯旋城有没有带学位,是不是公立学校 广东智通职业培训学院 东莞市铭格教育咨询有限公司怎么样? 塘厦电视大学是学什么的 初灵晶透焕颜美肌面膜有什么功效? mastercam2017设置进刀颜色和退刀颜色 专门喝酒拉单的职业叫什么? mastercam2022怎么改默认铣床 名剑风流的剧情简介 虚空之触如何获得 初中教wps吗? wps表格怎么计算课程数量 跪求一高数题答案 高等数学求解答!!! 铁研393玉米种子积温多少 一条9到11品相好的尼泊尔凤眼菩提价格 2011年被公开的转基因玉米种子,被国家叫停的有哪些? 为什么大家都结婚了? 纸塑袋的性能参数 大家都结婚了用英语怎么说 “为什么大家都悄无声息地结婚了呢”? 大家都结婚了吗,多少岁结婚的? 看到大家都结婚了,我心里开始变得慌了! 你会因为大家都结婚了,所以结婚么? 身边的朋友都结婚了,我不想结婚,这可耻吗? 钢铁侠模拟器怎么下载 万古神帝最后找到明帝了吗 《滚烫情话作逃酒》这本小说的全文免费的吗? 万古神帝飞天鱼怎么只有一半文字 万古神帝螭帝给阎无神说了什么 dw源代码保存在哪里 在dw里面,如何使用网上免费下载的客服源代码 您好!我有一个网站,用dw批量替换选择的是源码 为什么替换之后什么也不显示了! AgCl和Ag 2 CrO 4 的溶度积分别为1.8×10 - 10 mol 2 ·L - 2 和2.0×10 - 12 mol 3 ·L - 3 篮球场的感受 暑假我哪也没去,我去篮球场上 作文 600字 题目:暑期见闻 2-环己烯-1-甲醇的的上游原料和下游产品有哪些?