PySide6.QtGui.QPaintEngine

class QPaintEngine

QPaintEngine 类提供了 QPainter 如何在给定平台上绘制到给定设备的抽象定义。更多

概要

方法

虚拟方法

注意

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

详细描述

Qt为我们支持的不同绘图后端提供了几种预制的QPaintEngine实现。提供的主要绘图引擎是光栅绘图引擎,它包含一个软件光栅化器,支持所有支持平台上的完整功能集。这是在基于QWidget的类上绘图的默认设置,例如在Windows、X11和macOS上,它是QImage上绘图的后端,并且用作不支持某些功能的绘图引擎的备用方案。此外,我们还为OpenGL(通过QOpenGLWidget访问)和打印(允许使用QPainter在QPrinter对象上绘图)提供了QPaintEngine实现。

如果一个人想要使用QPainter来绘制到不同的后端,必须子类化QPaintEngine并重新实现其所有虚函数。然后通过子类化QPaintDevice并重新实现虚函数paintEngine()来提供QPaintEngine的实现。

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

class PaintEngineFeature

(继承自 enum.Flag) 此枚举用于描述绘图引擎具有的功能或能力。如果引擎不支持某个功能,QPainter 将尽力通过其他方式模拟该功能,并将模拟结果的带有 alpha 混合的 QImage 传递给引擎。某些功能无法模拟:AlphaBlend 和 PorterDuff。

常量

描述

QPaintEngine.AlphaBlend

引擎可以对图元进行alpha混合。

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使用,通过updateState()触发QPaintEngine中各种状态的延迟更新。

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

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()])
Parameters:

特性PaintEngineFeature 的组合

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

abstract begin(pdev)
Parameters:

pdevQPaintDevice

Return type:

布尔

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

另请参阅

end() isActive()

clearDirty(df)
Parameters:

dfDirtyFlag 的组合

coordinateOffset()
Return type:

QPoint

createPixmap(size)
Parameters:

大小QSize

Return type:

QPixmap

createPixmapFromImage(image[, flags=Qt.AutoColor])
Parameters:
Return type:

QPixmap

drawEllipse(r)
Parameters:

rQRect

这是一个重载函数。

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

drawEllipse(r)
Parameters:

rQRectF

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

默认实现调用 drawPolygon()

drawImage(r, pm, sr[, flags=Qt.AutoColor])
Parameters:

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

drawLines(lines, lineCount)
Parameters:
  • linesQLine

  • lineCount – int

这是一个重载函数。

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

drawLines(lines, lineCount)
Parameters:
  • linesQLineF

  • lineCount – int

默认实现将lines中的行列表拆分为lineCount个单独的调用,根据绘图引擎的功能集,分别调用drawPath()drawPolygon()

drawPath(path)
Parameters:

路径QPainterPath

默认实现忽略了path并且不做任何操作。

abstract drawPixmap(r, pm, sr)
Parameters:

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

drawPoints(points, pointCount)
Parameters:
  • pointsQPoint

  • pointCount – int

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

默认实现将points中的前pointCount个QPoints转换为QPointFs,并调用drawPoints的浮点版本。

drawPoints(points, pointCount)
Parameters:
  • pointsQPointF

  • pointCount – int

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

drawPolygon(points, pointCount, mode)
Parameters:

这是一个重载函数。

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

注意

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

drawPolygon(points, pointCount, mode)
Parameters:

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

注意

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

drawRects(rects, rectCount)
Parameters:
  • rectsQRect

  • rectCount – int

这是一个重载函数。

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

drawRects(rects, rectCount)
Parameters:
  • rectsQRectF

  • rectCount – int

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

drawTextItem(p, textItem)
Parameters:

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

drawTiledPixmap(r, pixmap, s)
Parameters:

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

abstract end()
Return type:

布尔

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

另请参阅

begin() isActive()

hasFeature(feature)
Parameters:

特性PaintEngineFeature 的组合

Return type:

布尔

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

isActive()
Return type:

布尔

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

另请参阅

setActive()

isExtended()
Return type:

布尔

paintDevice()
Return type:

QPaintDevice

如果正在绘制,则返回此引擎正在绘制的设备;否则返回None

painter()
Return type:

QPainter

返回绘图引擎的绘图器。

setActive(newState)
Parameters:

newState – 布尔值

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

另请参阅

isActive()

setDirty(df)
Parameters:

dfDirtyFlag 的组合

setSystemClip(baseClip)
Parameters:

baseClipQRegion

setSystemRect(rect)
Parameters:

rectQRect

syncState()
systemClip()
Return type:

QRegion

systemRect()
Return type:

QRect

testDirty(df)
Parameters:

dfDirtyFlag 的组合

Return type:

布尔

abstract type()
Return type:

类型

重新实现此函数以返回绘图引擎 Type

abstract updateState(state)
Parameters:

状态QPaintEngineState

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

当实现时,此函数负责检查绘图引擎的当前state并更新已更改的属性。使用state()函数找出哪些属性必须更新,然后使用相应的get function检索给定属性的当前值。

另请参阅

QPaintEngineState