绘画系统(04):【类】QPaintDevice[官翻]

QPaintDevice 类

QPaintDevice类是可以用QPainter绘制对象

Header#include < QPaintDevice >
qmakeQT += gui
Inherited ByQGLFramebufferObject, 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

描述绘画设备的各种指标

ConstantValueDescription
PdmWidth1绘画设备的宽度以默认坐标系单位(例如QPixmap和QWidget的像素)为单位。另请参见width() 。
PdmHeight2绘画设备的高度以默认坐标系单位(例如QPixmap和QWidget的像素)为单位。另请参见height() 。
PdmWidthMM3涂漆设备的宽度,以毫米为单位。另请参见widthMM() 。
PdmHeightMM4涂漆设备的高度,以毫米为单位。另请参见heightMM() 。
PdmNumColors5绘画设备可用的不同颜色的数量。另请参见colorCount() 。
PdmDepth6涂装设备的位深度(位平面的数量)。另请参见depth() 。
PdmDpiX7设备的水平分辨率,以每英寸点数为单位。另请参见logicalDpiX() 。
PdmDpiY8设备的垂直分辨率,以每英寸点数为单位。另请参见logicalDpiY() 。
PdmPhysicalDpiX9设备的水平分辨率,以每英寸点数为单位。另请参见physicalDpiX() 。
PdmPhysicalDpiY10设备的垂直分辨率,以每英寸点数为单位。另请参见physicalDpiY() 。
PdmDevicePixelRatio11设备的设备像素比率。普通值为1(对于普通dpi显示器)和2(对于高dpi的“视网膜”显示器)。
PdmDevicePixelRatioScaled12设备的缩放设备像素比例。该值与PdmDevicePixelRatio相同,只是该值以恒定因子缩放,以便支持具有小数比例因子的绘画设备。使用的恒定比例因子是devicePixelRatioFScale() 。这个枚举值已在Qt 5.6中引入。

公共函数

  1. virtual ~QPaintDevice()
  2. int colorCount() const 返回绘画设备可用的不同颜色的数量
    如果可用颜色的数量太多而无法用int数据类型表示,则将返回INT_MAX。
  3. int depth() const 返回绘制设备的位深度(位平面的数量)
  4. int devicePixelRatio() const 返回设备的设备像素比率
    qreal devicePixelRatioF() const
    对于普通dpi显示器,通用值为1;对于高dpi“视网膜”显示器,通用值为2。
  5. int height() const
    int heightMM() const
  6. int width() const
    int widthMM() const
  7. int logicalDpiX() const 设备的水平分辨率(以每英寸点数为单位),该分辨率在计算字体大小时使用
    int logicalDpiY() const 设备的垂直分辨率(以每英寸点数为单位),该分辨率在计算字体大小时使用
    int physicalDpiX() const 设备的水平分辨率,以每英寸点数为单位
    int physicalDpiY() const 设备的垂直分辨率,以每英寸点数为单位
  8. virtual QPaintEngine * paintEngine() const = 0 指向用于在设备上进行绘制的绘制引擎的指针
  9. bool paintingActive() const 设备是否当前正在绘制
    即对该设备调用了QPainter :: begin(), 但尚未调用QPainter :: end() ,返回true

受保护的函数

  1. QPaintDevice()
  2. virtual int metric(QPaintDevice::PaintDeviceMetric metric) const 给定绘画设备度量标准的度量标准信息
    另请参见PaintDeviceMetric。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值