【翻译】QPaintDevice(绘制设备)详解

一、描述

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

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

猜你喜欢

转载自blog.csdn.net/kenfan1647/article/details/115026011