一、描述
1、绘画设备是二维空间的抽象,可以使用QPainter绘制。其默认坐标系的原点位于左上角。X向右增加,Y向下增加。单位是一个像素。
2、QPaintDevice的具体绘图功能目前由QWidget、QImage、QPixmap、QGLPixelBuffer、QPicture和QPrinter等子类实现。
3、要实现对新后端的支持,必须从QPaintDevice派生并重新实现virtual paintEngine()函数,以告诉QPainter应该使用哪个绘制引擎在这个特定设备上绘制。请注意,还必须创建相应的绘制引擎才能在设备上绘制,即从QPaintEngine派生并重新实现其虚拟功能。
注意:在创建任何绘制设备之前,Qt要求QGuiApplication对象存在。绘制设备访问窗口系统资源,并且这些资源在创建应用程序对象之前不会初始化。
4、QPaintDevice类提供了几个返回各种设备度量的函数:
- depth() 返回其位深度(位平面数)。
- height() 以默认坐标系单位返回其高度(例如,QPixmap和QWidget的像素),
- heightMM() 以毫米为单位返回设备的高度。类似地,width()和widthMM()分别以默认坐标系单位和毫米为单位返回设备的宽度。
- protected metric() 通过指定所需的PaintDeviceMetric作为参数来检索度量信息。
- logicalDpiX()和logicalDpiY() 返回设备的水平和垂直分辨率,单位为每英寸点数。
- physicalDpiX()和physicalDpiY() 以每英寸点数为单位返回设备的分辨率,但请注意,如果逻辑分辨率和物理分辨率不同,则相应的QPaintEngine必须处理映射。
- colorCount() 返回可用于绘制设备的不同颜色数。
二、绘制设备参数的指标:QPaintDevice::PaintDeviceMetric
- PdmWidth:以默认坐标系单位表示的绘制设备的宽度。
- PdmHeight:以默认坐标系单位表示的绘制设备的高度。
- pdmWidthm:绘制设备的宽度,单位为毫米。
- PdmHeightMM:绘制设备的高度,单位为毫米。
- PdmNumColors:可用于绘制设备的不同颜色数。
- PdmDepth:绘制设备的位深度(位平面数)。
- PdmDpiX:设备的水平分辨率,单位为每英寸点数。
- PdmDpiY:设备的垂直分辨率,单位为每英寸点数。
- PdmPhysicalDpiX:设备的水平分辨率,单位为每英寸点数。
- PdmPhysicalDpiY:设备的垂直分辨率,单位为每英寸点数。
- PdmDevicePixelRatio:设备的设备像素比。普通显示设备显示值为1,高分辨率显示设备显示值为2。
- PdmDevicePixelRatioScaled:设备的缩放设备像素比。这与PdmDevicePixelRatio相同,只是该值按常量因子缩放,以支持具有分数比例因子的绘制设备。
三、成员函数
1、[virtual protected] int QPaintDevice::metric(QPaintDevice::PaintDeviceMetric metric) const
返回给定绘制设备指标的信息。
其他获取参数的信息实际上是调用metric():
2、[pure virtual] QPaintEngine *QPaintDevice::paintEngine() const
纯虚函数,获取绘制引擎的指针。
3、bool QPaintDevice::paintingActive() const
扫描二维码关注公众号,回复:
13130000 查看本文章

如果设备当前正在绘制,则返回true,即此设备调用了QPainter::begin(),但尚未调用QPainter::end();否则返回false。