class QPaintEngine#

QPaintEngine 类提供了一个抽象定义,说明 QPainter 如何在特定平台上将绘制到指定的设备。 更多

概要#

方法#

虚方法#

注意:

本文档可能包含从 C++ 自动翻译到 Python 的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译有误,也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 上创建工单的方式让我们知道。

详细描述#

Qt 为我们支持的不同画家后端提供了一些预定义的 QPaintEngine 实现。提供的主要绘制引擎是光栅绘制引擎,它包含一个软件光栅化器,支持所有支持平台的全特有人功能。这在 Windows、X11 和 macOS 等平台上基于 QWidget 的类绘制中是默认设置,它是 QImage 绘制的后端,并且作为不支持某些特定功能的绘制引擎的回退选项。此外,我们还提供了 OpenGL(通过 QOpenGLWidget 访问)和打印(允许使用 QPainter 在 QPrinter 对象上绘图)的 QPaintEngine 实现。

如果你想使用 QPainter 绘制到不同的后端,必须子类化 QPaintEngine 并重新实现所有虚拟函数。然后通过子类化 QPaintDevice 并重新实现虚拟函数 paintEngine() 使 QPaintEngine 实现可用。

QPaintEngine 是由创建它的 QPaintDevice 创建并拥有的。

class PaintEngineFeature#

(inherits enum.Flag) 这个枚举用来描述绘制引擎具有的功能或能力。如果引擎不支持某个功能,QPainter 将尽力通过其他方式模拟该功能,并通过带有模拟结果的透明度混合过的 QImage 传递给引擎。有些功能无法模拟:混合和波特-杜夫。

常量

描述

QPaintEngine.AlphaBlend

该引擎可以混合透明度。

QPaintEngine.Antialiasing

引擎可以使用抗锯齿功能提升渲染原语的外观。

QPaintEngine.BlendModes

引擎支持混合模式。

QPaintEngine.BrushStroke

引擎支持绘制包含刷子填充的描边,而不仅仅是纯色(例如宽度为2的虚线渐变线)。

QPaintEngine.ConicalGradientFill

引擎支持圆锥渐变填充。

QPaintEngine.ConstantOpacity

引擎支持由setOpacity()提供的功能。

QPaintEngine.LinearGradientFill

引擎支持线性渐变填充。

QPaintEngine.MaskedBrush

引擎可以渲染具有alpha通道或蒙版的纹理的刷子。

QPaintEngine.ObjectBoundingModeGradients

引擎原生支持坐标模式为ObjectBoundingMode的渐变。否则,如果支持QPaintEngine::PatternTransform,则对象边界的渐变将转换为坐标模式为LogicalMode的渐变,并对坐标映射进行刷子变换。

QPaintEngine.PainterPaths

引擎支持路径。

QPaintEngine.PaintOutsidePaintEvent

引擎可以在绘图事件之外进行绘制。

QPaintEngine.PatternBrush

引擎可以渲染在Qt::BrushStyle中指定的刷子图案。

QPaintEngine.PatternTransform

引擎支持转换刷子图案。

QPaintEngine.PerspectiveTransform

引擎支持对原语执行透视变换。

QPaintEngine.PixmapTransform

引擎可以对位图进行变换,包括旋转和剪切。

QPaintEngine.PorterDuff

引擎支持Porter-Duff运算。

QPaintEngine.PrimitiveTransform

引擎支持转换绘图原语。

QPaintEngine.RadialGradientFill

引擎支持径向渐变填充。

QPaintEngine.RasterOpModes

引擎支持位图运算。

QPaintEngine.AllFeatures

上述所有功能。此枚举值通常用作位掩码。

class DirtyFlag#

常量

描述

QPaintEngine.DirtyPen

(继承自enum.Flag) 带脏;需要更新。

QPaintEngine.DirtyBrush

刷子变脏;需要更新。

QPaintEngine.DirtyBrushOrigin

刷子原点变脏;需要更新。

QPaintEngine.DirtyFont

字体变脏;需要更新。

QPaintEngine.DirtyBackground

背景变脏;需要更新。

QPaintEngine.DirtyBackgroundMode

背景模式变脏;需要更新。

QPaintEngine.DirtyTransform

变换变脏;需要更新。

QPaintEngine.DirtyClipRegion

裁剪区域变脏;需要更新。

QPaintEngine.DirtyClipPath

裁剪路径变脏;需要更新。

QPaintEngine.DirtyHints

渲染提示变脏;需要更新。

QPaintEngine.DirtyCompositionMode

合成模式变脏;需要更新。

QPaintEngine.DirtyClipEnabled

裁剪是否启用变脏;需要更新。

QPaintEngine.DirtyOpacity

常量不透明度已更改,需要作为updateState()中状态变化的一部分进行更新。

QPaintEngine.AllDirty

内部使用的便利枚举。

这些类型由 QPainter 用于触发使用 QPaintEngine 中各种状态的懒更新,使用 updateState()

绘图引擎必须更新每个脏状态。

class PolygonDrawMode#

常量

描述

QPaintEngine.OddEvenMode

多边形应使用奇偶填充规则绘制。

QPaintEngine.WindingMode

多边形应使用Winding填充规则绘制。

QPaintEngine.ConvexMode

多边形是凸多边形,并且可以使用可用的专用算法绘制。

QPaintEngine.PolylineMode

仅绘制多边形的轮廓。

class Type#

常量

描述

QPaintEngine.X11

QPaintEngine.Windows

QPaintEngine.MacPrinter

QPaintEngine(CoreGraphics)

macOS的Quartz2D (CoreGraphics)

QPaintEngine.QuickDraw

macOS的QuickDraw

QPaintEngine.QWindowSystem

嵌入式Linux的Qt

QPaintEngine.OpenGL

QPaintEngine.Picture

QPicture 格式

QPaintEngine.SVG

可缩放矢量图形XML格式

QPaintEngine.Raster

QPaintEngine.Direct3D

仅限Windows,基于Direct3D的引擎

QPaintEngine.Pdf

可移植文档格式

QPaintEngine.OpenVG

QPaintEngine.User

第一个用户类型ID

QPaintEngine.MaxUser

最后一个用户类型ID

QPaintEngine.OpenGL2

QPaintEngine.PaintBuffer

QPaintEngine.Blitter

QPaintEngine.Direct2D

仅限Windows,基于Direct2D的引擎

PySide6.QtGui.QPaintEngine.state#
PySide6.QtGui.QPaintEngine.gccaps#
PySide6.QtGui.QPaintEngine.active#
PySide6.QtGui.QPaintEngine.selfDestruct#
PySide6.QtGui.QPaintEngine.extended#
__init__([features=QPaintEngine.PaintEngineFeatures()])#
参数::

featuresPaintEngineFeature 组合

创建具有由 caps 指定的功能集的绘图引擎。

简介 begin(pdev)#
参数::

pdevQPaintDevice

返回类型:

bool

重新实现此函数以在要开始在画布设备 pdev 上绘制时初始化您的绘图引擎。如果初始化成功,则返回 true;否则返回 false。

另请参阅

end() isActive()

clearDirty(df)#
参数::

dfDirtyFlag 的组合

coordinateOffset()#
返回类型:

QPoint

createPixmap(size)#
参数::

sizeQSize

返回类型:

QPixmap

createPixmapFromImage(image[, flags=Qt.AutoColor])#
参数::
返回类型:

QPixmap

drawEllipse(r)#
参数::

rQRect

此函数的默认实现调用该函数的浮点版本。

drawEllipse(r)
参数::

rQRectF

重新实现此函数以在矩形 rect 内可以包含的最大椭圆进行绘制。

默认实现调用 drawPolygon() .

drawImage(r, pm, sr[, flags=Qt.AutoColor])#
参数::

重新实现此函数以将指定由 **sr** 矩形指定的的一部分图像绘制到给定的 **rectangle** 中,使用给定的转换标志 **flags** 将其转换为位图。

drawLines(lines, lineCount)#
参数::
  • **lines** – QLine

  • **lineCount** – int

这是一个重载函数。

默认实现将 **lines** 中的前 **lineCount** 行转换为 QLineF 并调用此函数的浮点版本。

drawLines(lines, lineCount)
参数::
  • **lines** – QLineF

  • **lineCount** – int

默认实现将 **lines** 中的线条列表拆分为 **lineCount** 次单独调用的 **drawPath()** 或 **drawPolygon()**,具体取决于绘图引擎的功能集。

drawPath(path)#
参数::

**path** – QPainterPath

默认实现忽略 **path** 并不执行任何操作。

abstract drawPixmap(r, pm, sr)#
参数::

重新实现此函数,以将指定由 **sr** 矩形指定的 **pm** 的一部分绘制到给定的 **r** 中。

drawPoints(points, pointCount)#
参数::
  • pointsQPoint

  • pointCount – int

绘制缓冲区 points 中的前 pointCount 个点。

默认实现将 points 中的前 pointCount 个 QPoint 转换为 QPointF,然后调用 drawPoints 的浮点版本。

drawPoints(points, pointCount)
参数::
  • pointsQPointF

  • pointCount – int

绘制缓冲区 points 中的前 pointCount 个点。

drawPolygon(points, pointCount, mode)#
参数::

这是一个重载函数。

重新实现此虚拟函数,以使用模式 mode 绘制由 points 中前 pointCount 个点定义的多边形。

注意:

必须重新实现至少一个 drawPolygon() 函数。

drawPolygon(points, pointCount, mode)
参数::

重新实现此虚拟函数,以使用模式 mode 绘制由 points 中前 pointCount 个点定义的多边形。

注意:

必须重新实现至少一个 drawPolygon() 函数。

drawRects(rects, rectCount)#
参数::
  • rectsQRectF

  • rectCount – int

绘制缓冲区 rects 中的前 rectCount 个矩形。此函数的默认实现根据绘图引擎的功能集,调用 drawPath()drawPolygon()

drawRects(rects, rectCount)
参数::
  • rectsQRect

  • rectCount – int

这是一个重载函数。

默认实现将缓冲区中前rectCount个矩形转换为QRectF,并调用该函数的浮点版本。

drawTextItem(p, textItem)#
参数::

此函数在指定位置p绘制文本项textItem。此函数的默认实现将文本转换为QPainterPath并绘制结果路径。

drawTiledPixmap(r, pixmap, s)#
参数::

重新实现此函数以在给定的rect中绘制pixmap,从给定的p开始。Pixmap将被绘制,直到rect被填满。

抽象end()#
返回类型:

bool

重新实现此函数以完成当前绘画设备的绘画。如果绘画成功完成则返回true;否则返回false。

另请参阅

begin() isActive()

hasFeature(feature)#
参数::

featurePaintEngineFeature的组合

返回类型:

bool

如果绘图引擎支持指定的feature则返回true;否则返回false

isActive()#
返回类型:

bool

如果绘图引擎正在绘图,返回 true;否则返回 false

另请参阅

setActive()

isExtended()#
返回类型:

bool

paintDevice()#
返回类型:

QPaintDevice

如果绘图活动,返回此引擎所绘画的设备;否则返回 None

painter()#
返回类型:

QPainter

返回绘图引擎的绘图器。

setActive(newState)#
参数::

newState - bool

将绘图引擎的活动状态设置为 state

另请参阅

isActive()

setDirty(df)#
参数::

dfDirtyFlag 的组合

setSystemClip(baseClip)#
参数::

baseClip - QRegion

setSystemRect(rect)#
参数::

rect - QRect

syncState()#
systemClip()#
返回类型:

QRegion

systemRect()#
返回类型:

QRect

testDirty(df)#
参数::

dfDirtyFlag 的组合

返回类型:

bool

抽象type()#
返回类型:

Type

重写此函数以返回绘图引擎的 Type

抽象updateState(state)#
参数::

state - QPaintEngineState

重写此函数以更新绘图引擎的状态。

当实现该功能后,它负责检查绘画引擎的当前 状态 并更新已更改的属性。使用 state() 函数以找出哪些属性需要更新,然后使用相应的 get 函数 来检索给定属性的当前值。

另请参阅

QPaintEngineState