QPaintDevice 类

QPaintDevice 类是可用于通过 QPainter 绘图的基类对象。有关更多信息,请参阅 此处

头文件 #include <QPaintDevice>
CMakefind_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmakeQT += gui
继承自

QImageQOpenGLPaintDeviceQPagedPaintDeviceQPaintDeviceWindowQPictureQPixmapQSvgGeneratorQWidget

公共类型

枚举PaintDeviceMetric { PdmWidth, PdmHeight, PdmWidthMM, PdmHeightMM, PdmNumColors, …, PdmDevicePixelRatioScaled }

公共函数

虚拟~QPaintDevice()
intcolorCount() const
intdepth() const
qrealdevicePixelRatio() const
qrealdevicePixelRatioF() const
intheight() const
intheightMM() const
intlogicalDpiX() const
intlogicalDpiY() const
虚拟 QPaintEngine *paintEngine() const = 0
boolpaintingActive() const
intphysicalDpiX() const
intphysicalDpiY() const
intwidth() const
intwidthMM() const

保护函数

QPaintDevice()
虚拟 intmetric(QPaintDevice::PaintDeviceMetric metric) const

详细描述

绘图设备是可以使用 QPainter 绘制的二维空间的抽象。其默认坐标系统以左上角为原点。X 增加到右侧,Y 增加到下方。单位是像素。

QPaintDevice的绘图功能目前由QWidget、QImage、QPixmap、QPicture和QPrinter子类实现。

要实现对新后端的支持,您必须从QPaintDevice派生,并重新实现虚拟函数paintEngine(),以告诉QPainter应使用哪种绘图引擎来绘制特定设备。请注意,您还必须创建相应的绘图引擎,即派生自QPaintEngine并重新实现其虚拟函数,才能在该设备上进行绘制。

警告:在创建任何绘图设备之前,Qt要求存在QGuiApplication对象。绘图设备访问窗口系统资源,并且在没有创建应用程序对象之前,这些资源不会被初始化。

QPaintDevice类提供了几个返回不同设备度量值的功能:depth()函数返回其位深度(位数组)。height()函数返回其在默认坐标系中的高度(例如,对于QPixmap和QWidget,为像素)。而heightMM()返回设备以毫米为单位的高度。同样,width()和widthMM()函数分别以默认坐标系单位和毫米为单位返回设备宽度。另外,可以使用受保护的metric()函数通过指定所需的PaintDeviceMetric来检索度量信息。

logicalDpiX()和logicalDpiY()函数返回设备以每英寸点数为单位水平和垂直分辨率。physicalDpiX()和physicalDpiY()函数也以每英寸点数为单位返回设备的分辨率,但请注意,如果逻辑和物理分辨率不同,相应的QPaintEngine必须处理映射。最后,colorCount()函数返回可用于绘图设备的不同颜色的数量。

另请参阅:QPaintEngine、QPainter、坐标系和绘制系统。

成员类型文档

enum QPaintDevice::PaintDeviceMetric

描述绘图设备的各种度量。

常量描述
QPaintDevice::PdmWidth1以默认坐标系单位(例如,对于QPixmap和QWidget为像素)表示的绘图设备宽度。另请参阅width()。
QPaintDevice::PdmHeight2以默认坐标系单位(例如,对于QPixmap和QWidget为像素)表示的绘图设备高度。另请参阅height()。
QPaintDevice::PdmWidthMM3以毫米表示的绘图设备宽度。另请参阅widthMM()。
QPaintDevice::PdmHeightMM4以毫米表示的绘图设备高度。另请参阅heightMM()。
QPaintDevice::PdmNumColors5绘图设备可用的不同颜色数量。另请参阅colorCount()。
QPaintDevice::PdmDepth6绘图设备的位深度(位数组)。另请参阅depth()。
QPaintDevice::PdmDpiX7以每英寸点数为单位的设备水平分辨率。另请参阅logicalDpiX()。
QPaintDevice::PdmDpiY8设备的垂直分辨率,每英寸点数。另见 logicalDpiY
QPaintDevice::PdmPhysicalDpiX9设备的水平分辨率,每英寸点数。另见 physicalDpiX
QPaintDevice::PdmPhysicalDpiY10设备的垂直分辨率,每英寸点数。另见 physicalDpiY
QPaintDevice::PdmDevicePixelRatio11设备的像素比。常见值是 1,适用于正常 dpi 屏幕和 2,适用于高 dpi 的“视网膜”屏幕。
QPaintDevice::PdmDevicePixelRatioScaled12设备的缩放像素比。这与 PdmDevicePixelRatio 相同,不同的是值通过一个常数因子缩放,以支持具有分数缩放因子的画布设备。使用的常量缩放因子是 devicePixelRatioFScale()。此枚举值在 Qt 5.6 中引入。

另见 metricdevicePixelRatio

成员函数文档

[noexcept protected] QPaintDevice::QPaintDevice()

构建画布设备。此构造函数只能从 QPaintDevice 的子类中调用。

[virtual noexcept] QPaintDevice::~QPaintDevice()

销毁画布设备,释放窗口系统资源。

int QPaintDevice::colorCount() const

返回可用于画布设备的不同颜色数量。如果可用的颜色数量太多,无法用 int 数据类型表示,则返回 INT_MAX。

int QPaintDevice::depth() const

返回画布设备的位深度(位平面数)。

qreal QPaintDevice::devicePixelRatio() const

返回设备的像素比。

常见值是 1,适用于正常 dpi 屏幕和 2,适用于高 dpi 的“视网膜”屏幕。

qreal QPaintDevice::devicePixelRatioF() const

返回设备像素比作为浮点数。

int QPaintDevice::height() const

返回画布设备在默认坐标系单位中的高度(例如,对于 QPixmapQWidget 是像素)。

另见 heightMM

int QPaintDevice::heightMM() const

返回画布设备的高度(毫米)。由于平台限制,可能无法使用此函数来确定屏幕上窗口的实际物理大小。

另见 height

int QPaintDevice::logicalDpiX() const

返回设备在每英寸点的水平分辨率,用于计算字体大小。对于 X11,这通常与从 widthMM 计算得到的结果相同。

请注意,如果logicalDpiX()的值不等于physicalDpiX(),相应的QPaintEngine必须处理分辨率映射。

另请参阅logicalDpiY()和physicalDpiX()。

int QPaintDevice::logicalDpiY() const

返回设备的垂直分辨率(每英寸点数),用于计算字体大小。对于X11,这通常与从heightMM()计算的值相同。

请注意,如果logicalDpiY()不等于physicalDpiY(),相应的QPaintEngine必须处理分辨率映射。

另请参阅logicalDpiX()和physicalDpiY()。

[虚保护] int QPaintDevice::metric(QPaintDevice::PaintDeviceMetric metric) const

返回指定绘制设备metric的度量信息。

另请参阅PaintDeviceMetric

[纯虚] QPaintEngine *QPaintDevice::paintEngine() const

返回用于在设备上绘制的绘图引擎的指针。

bool QPaintDevice::paintingActive() const

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

另请参阅QPainter::isActive

int QPaintDevice::physicalDpiX() const

返回设备在每英寸点数(dpi)的水平和分辨率。例如,在打印时,该分辨率指的是物理打印机的分辨率。而逻辑DPI则是指实际绘图引擎使用的分辨率。

请注意,如果physicalDpiX()不等于logicalDpiX(),相应的QPaintEngine必须处理分辨率映射。

另请参阅physicalDpiY()和logicalDpiX()。

int QPaintDevice::physicalDpiY() const

返回设备在每英寸点数(dpi)的水平和分辨率。例如,在打印时,该分辨率指的是物理打印机的分辨率。而逻辑DPI则是指实际绘图引擎使用的分辨率。

请注意,如果physicalDpiY()不等于logicalDpiY(),相应的QPaintEngine必须处理分辨率映射。

另请参阅physicalDpiX()和logicalDpiY()。

int QPaintDevice::width() const

返回绘制设备的宽度,以默认坐标系单位(例如,QPixmap和QWidget的像素)计算。

另请参阅widthMM()。

int QPaintDevice::widthMM() const

以毫米为单位返回绘制设备的宽度。由于平台限制,可能无法使用此函数来确定屏幕上小部件的实际物理大小。

另请参阅 宽度

© 2024 Qt公司有限。本文件中的文档贡献是各自所有者的版权。本文件提供的文档根据自由软件基金会发布的 GNU自由文档许可证版本1.3 的条款许可。Qt及其相关标志是芬兰的Qt公司及其全球其他国家的商标。所有其他商标均为其各自所有者的财产。