QPaintDevice 类
QPaintDevice类是可以用QPainter绘制对象的基类
Header | #include < QPaintDevice > |
---|---|
qmake | QT += gui |
Inherited By | QGLFramebufferObject, QGLPixelBuffer, QImage, QOpenGLPaintDevice, QPagedPaintDevice, QPaintDeviceWindow, QPicture, QPixmap, QSvgGenerator, and QWidget |
详述
绘制设备是可以使用QPainter绘制的二维空间的抽象。其默认坐标系的原点位于左上角。 X向右增加,Y向下方增加。单位是一个像素。
QPaintDevice的绘制功能当前由QWidget,QImage,QPixmap,QGLPixelBuffer,QPicture和QPrinter子类实现。
为了实现对新后端的支持,您必须从QPaintDevice派生并重新实现 virtual paintEngine() 函数,以告诉QPainter应该使用哪个绘画引擎在此特定设备上绘制。请注意,您还必须创建一个相应的绘画引擎才能在设备上进行绘制,即从QPaintEngine派生并重新实现其虚拟功能。
警告:在创建任何绘画设备之前,Qt要求存在QGuiApplication对象。绘画设备访问窗口系统资源,并且在创建应用程序对象之前不会初始化这些资源。
QPaintDevice类提供了几个返回各种设备指标的函数:
- depth() 函数返回其位深度(位平面的数量)。
- height() 函数以默认坐标系单位(例如QPixmap和QWidget的像素)返回其高度,而heightMM() 返回以毫米为单位的设备高度。
- width() 和widthMM() 函数分别以默认坐标系单位和毫米为单位返回设备的宽度。
- 通过将所需的PaintDeviceMetric指定为参数,可以使用protected metric() 函数来检索度量信息。
- logicalDpiX() 和logicalDpiY() 函数以每英寸点数的形式返回设备的水平和垂直分辨率。
- physicalDpiX() 和physicalDpiY() 函数还返回每英寸点数的设备分辨率,但是请注意,如果逻辑分辨率和物理分辨率不同,则相应的QPaintEngine必须处理映射。
- colorCount() 函数返回绘画设备可用的不同颜色的数量。
另请参见QPaintEngine,QPainter,坐标系和绘画系统。
公共类型
enum PaintDeviceMetric
描述绘画设备的各种指标
Constant | Value | Description |
---|---|---|
PdmWidth | 1 | 绘画设备的宽度以默认坐标系单位(例如QPixmap和QWidget的像素)为单位。另请参见width() 。 |
PdmHeight | 2 | 绘画设备的高度以默认坐标系单位(例如QPixmap和QWidget的像素)为单位。另请参见height() 。 |
PdmWidthMM | 3 | 涂漆设备的宽度,以毫米为单位。另请参见widthMM() 。 |
PdmHeightMM | 4 | 涂漆设备的高度,以毫米为单位。另请参见heightMM() 。 |
PdmNumColors | 5 | 绘画设备可用的不同颜色的数量。另请参见colorCount() 。 |
PdmDepth | 6 | 涂装设备的位深度(位平面的数量)。另请参见depth() 。 |
PdmDpiX | 7 | 设备的水平分辨率,以每英寸点数为单位。另请参见logicalDpiX() 。 |
PdmDpiY | 8 | 设备的垂直分辨率,以每英寸点数为单位。另请参见logicalDpiY() 。 |
PdmPhysicalDpiX | 9 | 设备的水平分辨率,以每英寸点数为单位。另请参见physicalDpiX() 。 |
PdmPhysicalDpiY | 10 | 设备的垂直分辨率,以每英寸点数为单位。另请参见physicalDpiY() 。 |
PdmDevicePixelRatio | 11 | 设备的设备像素比率。普通值为1(对于普通dpi显示器)和2(对于高dpi的“视网膜”显示器)。 |
PdmDevicePixelRatioScaled | 12 | 设备的缩放设备像素比例。该值与PdmDevicePixelRatio相同,只是该值以恒定因子缩放,以便支持具有小数比例因子的绘画设备。使用的恒定比例因子是devicePixelRatioFScale() 。这个枚举值已在Qt 5.6中引入。 |
公共函数
- virtual ~QPaintDevice()
- int colorCount() const 返回绘画设备可用的不同颜色的数量
如果可用颜色的数量太多而无法用int数据类型表示,则将返回INT_MAX。 - int depth() const 返回绘制设备的位深度(位平面的数量)
- int devicePixelRatio() const 返回设备的设备像素比率
qreal devicePixelRatioF() const
对于普通dpi显示器,通用值为1;对于高dpi“视网膜”显示器,通用值为2。 - int height() const
int heightMM() const - int width() const
int widthMM() const - int logicalDpiX() const 设备的水平分辨率(以每英寸点数为单位),该分辨率在计算字体大小时使用
int logicalDpiY() const 设备的垂直分辨率(以每英寸点数为单位),该分辨率在计算字体大小时使用
int physicalDpiX() const 设备的水平分辨率,以每英寸点数为单位
int physicalDpiY() const 设备的垂直分辨率,以每英寸点数为单位 - virtual QPaintEngine * paintEngine() const = 0 指向用于在设备上进行绘制的绘制引擎的指针
- bool paintingActive() const 设备是否当前正在绘制
即对该设备调用了QPainter :: begin(), 但尚未调用QPainter :: end() ,返回true
受保护的函数
- QPaintDevice()
- virtual int metric(QPaintDevice::PaintDeviceMetric metric) const 给定绘画设备度量标准的度量标准信息
另请参见PaintDeviceMetric。