Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7723954
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: 嵌入式

2013-12-19 16:45:15


QPaintDevice类是实际的绘制设备的基类.QPainter能够在QPaintDevice子类上进行绘制,如QWidget,QImage,QPixmap,QGLWidget,QGLPixelBuffer,QPicture,QPrinter
QSvgGenerator.要实现自己的绘图设备,必须从QPaintDevice类继承并实现其虚函数QPaintDevice::paintEngine()以告之QPainter能够在这个特定的设备上绘制图形,同时还需要从
QPaintEngine类继承自定义的图形绘制引擎。

1 QWidget
QWidget是所有用户界面元素的基类,窗口部件时用户界面的原子元素,他接受鼠标,键盘,窗口系统的其他事件并在屏幕上绘制自己。
2 QImage

QImage优化了I/O操作,可以直接 存取操作像素数据。

QImage类提供了与硬件无关的图像表示,它为直接操作像素提供优化,QImage支持单色,8-bit,32-bitalpha混合图像,使用QImage的优点在于可以获得平台无关的绘制操作,另外还有一个好处时图像可以不必在GUI线程中处理。

3 QPixmap
QPixmap主要用来在屏幕上显示图像。
QPixmap时后台显示的图像,它为在屏幕上显示图像提供优化,不同于QImage,pixmap的图像数据用户不可见,而且由底层窗口系统管理,为了优化QPixmap图像,Qt提供了QPixmapCache类来存储临时的pixmap.Qt还提供了QPixmap的继承类QBitmap类,QBitmap表示单色的pixmap,主要用来创建自定义的QCursorQBrush对象,构造QRegion对象,设置pixmap和窗口部件的掩码。

4 OPenGLWidget
Qt提供了QtOpenGL模块来实现OpenGL操作,QGLWidget允许使用OpenGL API进行绘制。同时QGLWidgetQWidget的子类,因此QPainter也可以在上面绘制。这样可以使Qt能够利用OpenGl完成绘制操作,如变换和绘制pixmap

5 pixel Buffer
QGLPixelBufferQPaintDevice继承,封装了OpenGL pbuffer.使用pbuffer绘制通常时全硬件加速,这比使用QPixmap绘制更为迅速。

6 FrameBuffer
QGLFrameBufferObjectQPaintDevice继承,QGLFrameBufferObject封装了OpenGL frameBuffer对象,FrameBuffer对戏那个用来实现后台屏幕绘制,比pixel buffer更好一些。
7 picture
QPicture类时能够记录和重演QPainter命令的绘图设备,picture串行化painter的命令为平台无关的格式,QPicture同时也于分辨率无关,如QPicuture能够在不同的设备上(svg,pdf,ps打印机和屏幕)有一只的显示。QPicture::load()QPicture::save()函数分别完成载入和存储图像。

8 Printer
QPrinter 类时在打印机上绘制的绘图设备,在WindowsMAC OS X上,QPrinter使用内建的打印机程序,在X11上,QPrinter山城postscript代码并发送给lpr,lp或者其他打印程 序,QPrinter可以在任意其他QPrintEngine对象上打印,也可以直接生成PDF文件。
QPrintEngine类定义了QPrinter如何和其他打印机系统交互的接口,主要创建自己的打印引擎时,可以从QPaintEngineQPaintEngine上继承。
=========================================
 
返回目录:Qt学习整理


阅读(2738) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~