了解三种常见绘图设备QPixmap/QBitmap/QImage

绘图设备


绘图设备是指继承QPaintDevice的子类,你可以使用QPainter直接在其上面绘制图形,Qt一共提供了四个这样继承QPaintDevice的绘图设备类,分别是QPixmap、QBitmap、QImage和 QPicture。
常用QPixmap屏幕上显示图片,Qimage用于传输数据

  • QPixmap专门为图像在屏幕上的显示做了优化
  • QBitmap是QPixmap的一个子类
  • QImage专门为图像的像素级访问做了优化
  • QPicture则可以记录和重现QPainter的各条命令

QPixmap


  • 四种绘图设备中基本最常用的就是 QPixmap
  • QPixmap可以接受一个字符串作为一个文件的路径来显示这个文件
  • 使用QPainter的drawPixmap()函数可以把这个文件绘制到一个QLabel、QPushButton或者其他的设备上面。
  • QPixmap是针对屏幕进行特殊优化的,因此,它与实际的底层显示设备息息相关,是操作系统提供的原生的绘图引擎。所以,在不同的操作系统平台下,QPixmap的显示可能会有所差别。
  • QPixmap主要是用于绘图,针对屏幕显示而最佳化设计,QImage主要是为图像I/O、图片访问和像素修改而设计的

QBitmap


  • QBitmap继承自QPixmap,主要用于显示单色位图。是QPixmap子类,因此具有其所有特性。QBitmap的色深始终为1.
    色深这个概念来自计算机图形学,是指用于表现颜色的二进制的位数。我们知道,计算机里面的数据都是使用二进制表示的。为了表示一种颜色,我们也会使用二进制。1个位只有两种状态:0和1,因此它所表示的颜色就有两种,黑和白。所以说,QBitmap实际上是只有黑白两色的图像数据。
  • 由于QBitmap色深小,因此只占用很少的存储空间,所以适合做光标文件和笔刷。

QImage


  • QPixmap使用底层平台的绘制系统进行绘制,无法提供像素级别的操作,而QImage则是使用独立于硬件的绘制系统,实际上是自己绘制自己,因此提供了像素级别的操作,并且能够在不同系统之上提供一个一致的显示形式。
  • 声明了一个QImage对象,大小是3 x 3,颜色模式是RGB32,即使用32位数值表示一个颜色的RGB值,也就是说每种颜色使用8位。然后我们对每个像素进行颜色赋值,从而构成了这个图像
  • QImage可通过setPixpel()和pixel()等方法直接存取指定的像素。
QImage image(3,3,QImage::Format_RGB32);
value=qRgb(186,147,39); 0xffbb8372 //32位表示一个颜色
image.setPixel(1,1,value);
  • 可以把QImage想象成一个RGB颜色的二维数组,记录了每一像素的颜色。
  • 当图片较大时,我们可以先通过QImage将图片加载进来,然后把图片缩放成需要的尺寸,最后转换成QPixmap 进行显示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值