了解 Qt 绘图设备QPixmap、QBitmap、QImage和 QPicture
绘图设备是指继承QPaintDevice
的子类,分别是QPixmap
、QBitmap
、QImage
和 QPicture
。四个不同的派生类主要功能也不同,其中,
QPixmap
专门为图像在屏幕上的显示做了优化;
QBitmap
是QPixmap
的一个子类,它的色深限定为1
,可以使用 QPixmap
的isQBitmap()
函数来确定这个QPixmap
是不是一个QBitmap
;
QImage
专门为图像的像素级访问做了优化;
QPicture
则可以记录和重现QPainter
的各条命令。
QPixmap
QPixmap
继承了QPaintDevice
,因此,可以使用QPainter
直接在上面绘制图形。QPixmap
也可以接受一个字符串作为一个文件的路径来显示这个文件,比如想在程序之中打开png
、jpeg
之类的文件,就可以使用 QPixmap
。使用QPainter
的drawPixmap()
函数可以把这个文件绘制到一个QLabel
、QPushButton
或者其他的设备上面。QPixmap
是针对屏幕进行特殊优化的,因此,它与实际的底层显示设备息息相关。注意,这里说的显示设备并不是硬件,而是操作系统提供的原生的绘图引擎。所以,在不同的操作系统平台下,QPixmap
的显示可能会有所差别。
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
// Pixmap绘图设备,对显示做了优化
// 指定宽高
QPixmap pix(300, 300);
// 填充颜色
pix.fill(Qt::white);
// 创建画家,并画一个圆
QPainter painter(&pix);
painter.setPen(QPen(Qt::green));