【Qt】QPaintDevice类详解

00. 目录

01. 概述

绘画设备是二维空间的抽象,可以使用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()分别以默认坐标系单位和毫米为单位返回设备的宽度。
protected metric() 通过指定所需的PaintDeviceMetric作为参数来检索度量信息。
logicalDpiX()logicalDpiY() 返回设备的水平和垂直分辨率,单位为每英寸点数。
physicalDpiX()physicalDpiY() 以每英寸点数为单位返回设备的分辨率,但请注意,如果逻辑分辨率和物理分辨率不同,
则相应的QPaintEngine必须处理映射。
colorCount() 返回可用于绘制设备的不同颜色数。

02. 绘制设备参数的指标

enum QPaintDevice::PaintDeviceMetric

PdmWidth:以默认坐标系单位表示的绘制设备的宽度。
PdmHeight:以默认坐标系单位表示的绘制设备的高度。
pdmWidthm:绘制设备的宽度,单位为毫米。
PdmHeightMM:绘制设备的高度,单位为毫米。
PdmNumColors:可用于绘制设备的不同颜色数。
PdmDepth:绘制设备的位深度(位平面数)。
PdmDpiX:设备的水平分辨率,单位为每英寸点数。
PdmDpiY:设备的垂直分辨率,单位为每英寸点数。
PdmPhysicalDpiX:设备的水平分辨率,单位为每英寸点数。
PdmPhysicalDpiY:设备的垂直分辨率,单位为每英寸点数。
PdmDevicePixelRatio:设备的设备像素比。普通显示设备显示值为1,高分辨率显示设备显示值为2。
PdmDevicePixelRatioScaled:设备的缩放设备像素比。这与PdmDevicePixelRatio相同,只是该值
按常量因子缩放,以支持具有分数比例因子的绘制设备。

03. 成员方法

[protected] QPaintDevice::QPaintDevice()
	构造函数
[virtual] QPaintDevice::~QPaintDevice()
    析构函数
int QPaintDevice::colorCount() const
    返回绘图设备可以使用的颜色数
int QPaintDevice::depth() const
    返回绘制设备的位深度
int QPaintDevice::devicePixelRatio() const
    返回设备的设备像素比
qreal QPaintDevice::devicePixelRatioF() const
    使用浮点数返回设备像素比
int QPaintDevice::height() const   
    返回以默认坐标系单位表示的绘制设备的高度
int QPaintDevice::heightMM() const
    返回绘制设备的高度,单位为毫米。
int QPaintDevice::logicalDpiX() const
    返回设备的水平分辨率,单位为每英寸点数。
int QPaintDevice::logicalDpiY() const
    返回设备的垂直分辨率,单位为每英寸点数。
[virtual protected] int QPaintDevice::metric(QPaintDevice::PaintDeviceMetric metric) const
    返回绘制设备参数信息
[pure virtual] QPaintEngine *QPaintDevice::paintEngine() const
    返回指向用于在设备上进行绘制的绘制引擎的指针。
bool QPaintDevice::paintingActive() const
    返回true当前是否在绘制设备,即有人对该设备调用了QPainter :: begin()但尚未调用QPainter :: end();否则返回false。
int QPaintDevice::physicalDpiX() const
    返回设备的水平分辨率(以每英寸点数为单位)。例如,在打印时,此分辨率是指物理打印机的分辨率。另一方面,
    逻辑DPI是指实际绘画引擎使用的分辨率。
	请注意,如果physicalDpiX()不等于logicalDpiX(),则相应的QPaintEngine必须处理分辨率映射。
int QPaintDevice::physicalDpiY() const
    返回设备的垂直分辨率(以每英寸点数为单位)。例如,在打印时,此分辨率是指物理打印机的分辨率。另一方面,
    逻辑DPI是指实际绘画引擎使用的分辨率。
	请注意,如果physicalDpiY()不等于logicalDpiY(),则相应的QPaintEngine必须处理分辨率映射。
int QPaintDevice::width() const
    以默认坐标系单位(例如QPixmap和QWidget的像素)返回绘制设备的宽度。
int QPaintDevice::widthMM() const
    返回绘画设备的宽度(以毫米为单位)。由于平台的限制,可能无法使用此功能来确定屏幕上小部件的实际物理尺寸。

04. 预留

05. 预留

06. 附录

6.1 Qt教程汇总
网址:https://dengjin.blog.csdn.net/article/details/115174639

© 版权声明
THE END
喜欢就支持一下吧
点赞335 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容