PySide6.QtGui.QPainterPath

class QPainterPath

QPainterPath 类为绘画操作提供了一个容器,使得图形形状可以被构建和重用。More_

概要

方法

注意

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

详细描述

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

画家路径是由许多图形构建块组成的对象,例如矩形、椭圆、线和曲线。构建块可以连接成封闭的子路径,例如矩形或椭圆。封闭路径的起点和终点重合。或者它们可以独立存在为未封闭的子路径,例如线和曲线。

一个QPainterPath对象可以用于填充、描边和裁剪。要为给定的绘制路径生成可填充的轮廓,请使用QPainterPathStroker类。与普通绘制操作相比,绘制路径的主要优势在于复杂的形状只需要创建一次;然后可以通过调用drawPath()函数多次绘制它们。

QPainterPath 提供了一系列函数,可用于获取路径及其元素的信息。此外,还可以使用 toReversed() 函数来反转元素的顺序。还有一些函数可以将此绘图路径对象转换为多边形表示。

组合一个QPainterPath

一个QPainterPath对象可以构造为一个空路径,带有给定的起点,或者作为另一个QPainterPath对象的副本。一旦创建,可以使用lineTo()arcTo()cubicTo()quadTo()函数将线条和曲线添加到路径中。这些线条和曲线从currentPosition()延伸到作为参数传递的位置。

currentPosition()QPainterPath 对象始终是最后添加的子路径的结束位置(或初始起点)。使用 moveTo() 函数可以在不添加组件的情况下移动 currentPosition()moveTo() 函数隐式地开始一个新的子路径,并关闭前一个子路径。另一种开始新子路径的方法是调用 closeSubpath() 函数,该函数通过从 currentPosition() 添加一条线回到路径的起始位置来关闭当前路径。请注意,新路径的初始 currentPosition() 将是 (0, 0)。

QPainterPath 类还提供了几个方便的函数来向绘图路径添加闭合子路径:addEllipse()addPath()addRect()addRegion()addText()addPolygon() 函数添加一个未闭合的子路径。实际上,这些函数都是 moveTo()lineTo()cubicTo() 操作的集合。

此外,可以使用connectPath()函数将路径添加到当前路径中。但请注意,此函数将通过添加一条线将当前路径的最后一个元素连接到给定路径的第一个元素。

下面是一个代码片段,展示了如何使用QPainterPath对象:

qpainterpath-construction1

path = QPainterPath()
path.addRect(20, 20, 60, 60)
path.moveTo(0, 0)
path.cubicTo(99, 0, 50, 50, 99, 99)
path.cubicTo(0, 99, 50, 50, 0, 0)
painter = QPainter(self)
painter.fillRect(0, 0, 100, 100, Qt.white)
painter.setPen(QPen(QColor(79, 106, 25), 1, Qt.SolidLine,
                    Qt.FlatCap, Qt.MiterJoin))
painter.setBrush(QColor(122, 163, 39))
painter.drawPath(path)

画家路径在构造时最初是空的。我们首先添加一个矩形,这是一个封闭的子路径。然后我们添加两条贝塞尔曲线,它们共同形成一个封闭的子路径,尽管它们各自并不封闭。最后我们绘制整个路径。路径使用默认的填充规则Qt::OddEvenFill进行填充。Qt提供了两种填充路径的方法:

Qt::OddEvenFill

Qt::WindingFill

qt-fillrule-winding3

qt-fillrule-winding3

请参阅Qt::FillRule文档以了解规则的定义。可以使用fillRule()函数检索画家路径当前设置的填充规则,并使用setFillRule()函数进行更改。

QPainterPath 信息

QPainterPath 类提供了一组函数,用于返回有关路径及其元素的信息。

currentPosition() 函数返回最后添加的子路径的终点(或初始起点)。elementAt() 函数可用于检索各个子路径元素,元素的数量可以使用elementCount() 函数检索,而isEmpty() 函数则告诉您此QPainterPath 对象是否包含任何元素。

controlPointRect() 函数返回包含此路径中所有点和控制点的矩形。此函数的计算速度明显快于精确的 boundingRect(),后者以浮点精度返回此绘制路径的边界矩形。

最后,QPainterPath 提供了 contains() 函数,可用于确定给定点或矩形是否在路径内,以及 intersects() 函数,用于确定给定矩形内的任何点是否也在此路径内。

QPainterPath 转换

出于兼容性原因,可能需要简化绘图路径的表示:QPainterPath 提供了 toFillPolygon()toFillPolygons()toSubpathPolygons() 函数,这些函数将绘图路径转换为多边形。toFillPolygon() 将绘图路径返回为一个单独的多边形,而后两个函数返回一个多边形列表。

提供了toFillPolygons()toSubpathPolygons()函数,因为通常绘制多个小多边形比绘制一个大多边形更快,即使绘制的总点数相同。两者之间的区别在于它们返回的多边形数量toSubpathPolygons()为每个子路径创建一个多边形,无论子路径是否相交(即重叠的边界矩形),而toFillPolygons()函数仅为重叠的子路径创建一个多边形。

toFillPolygon()toFillPolygons() 函数首先将所有子路径转换为多边形,然后使用重绕技术确保可以使用正确的填充规则填充重叠的子路径。请注意,重绕会在多边形中插入额外的线条,因此填充多边形的轮廓与路径的轮廓不匹配。

示例

Qt 提供了位于 Qt 示例目录中的 Painter Paths 示例和 Vector Deformation 示例。

Painter Paths 示例展示了如何使用画家路径来构建复杂的形状进行渲染,并让用户尝试填充和描边。Vector Deformation 示例展示了如何使用 QPainterPath 来绘制文本。

画家路径示例

矢量变形示例

qpainterpath-demo5

qpainterpath-demo5

另请参阅

QPainterPathStroker QPainter QRegion Painter Paths Example

class ElementType

此枚举描述了用于连接子路径中顶点的元素类型。

请注意,使用addEllipse()addPath()addPolygon()addRect()addRegion()addText()便捷函数添加为闭合子路径的元素,实际上是使用moveTo()lineTo()cubicTo()函数作为单独元素的集合添加到路径中的。

常量

描述

QPainterPath.MoveToElement

一个新的子路径。另请参阅 moveTo()

QPainterPath.LineToElement

一条线。另请参阅 lineTo()

QPainterPath.CurveToElement

一条曲线。另请参阅 cubicTo()quadTo()

QPainterPath.CurveToDataElement

描述CurveToElement元素中曲线所需的额外数据。

__init__()

构造一个空的QPainterPath对象。

__init__(other)
Parameters:

其他QPainterPath

创建一个QPainterPath对象,它是给定path的副本。

另请参阅

operator=()

__init__(startPoint)
Parameters:

startPointQPointF

创建一个QPainterPath对象,并将给定的startPoint作为其当前位置。

addEllipse(rect)
Parameters:

矩形QRectF

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

在指定的boundingRectangle内创建一个椭圆,并将其作为闭合子路径添加到绘制路径中。

椭圆由顺时针曲线组成,从零度(3点钟位置)开始并结束。

qpainterpath-addellipse1

myGradient = QLinearGradient()
myPen = QPen()
boundingRectangle = QRectF()
myPath = QPainterPath()
myPath.addEllipse(boundingRectangle)
painter = QPainter(self)
painter.setBrush(myGradient)
painter.setPen(myPen)
painter.drawPath(myPath)

另请参阅

arcTo() drawEllipse() 组合 一个 QPainterPath

addEllipse(center, rx, ry)
Parameters:
  • centerQPointF

  • rx – 浮点数

  • ry – 浮点数

这是一个重载函数。

创建一个以center为中心,半径为rxry的椭圆,并将其作为闭合子路径添加到绘制路径中。

addEllipse(x, y, w, h)
Parameters:
  • x – 浮点数

  • y – 浮点数

  • w – 浮点数

  • h – 浮点数

这是一个重载函数。

在其左上角位于(x, y)、widthheight定义的边界矩形内创建一个椭圆,并将其作为闭合子路径添加到绘制路径中。

addPath(path)
Parameters:

路径QPainterPath

将给定的path添加为路径的闭合子路径。

另请参阅

connectPath() 组合 一个 QPainterPath

addPolygon(polygon)
Parameters:

多边形QPolygonF

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

将给定的polygon作为(未闭合的)子路径添加到路径中。

请注意,添加多边形后的当前位置是多边形的最后一个点。要画一条线回到第一个点,请使用closeSubpath()函数。

qpainterpath-addpolygon1

myGradient = QLinearGradient()
myPen = QPen()
myPolygon = QPolygonF()
myPath = QPainterPath()
myPath.addPolygon(myPolygon)
painter = QPainter(self)
painter.setBrush(myGradient)
painter.setPen(myPen)
painter.drawPath(myPath)

另请参阅

lineTo() 组合 一个 QPainterPath

addRect(rect)
Parameters:

矩形QRectF

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

将给定的rectangle作为闭合子路径添加到此路径中。

rectangle 被添加为一组顺时针的线条。添加 rectangle 后,绘制路径的当前位置位于矩形的左上角。

qpainterpath-addrectangle1

myGradient = QLinearGradient()
myPen = QPen()
myRectangle = QRectF()
myPath = QPainterPath()
myPath.addRect(myRectangle)
painter = QPainter(self)
painter.setBrush(myGradient)
painter.setPen(myPen)
painter.drawPath(myPath)

另请参阅

addRegion() lineTo() 组合 一个 QPainterPath

addRect(x, y, w, h)
Parameters:
  • x – 浮点数

  • y – 浮点数

  • w – 浮点数

  • h – 浮点数

这是一个重载函数。

在位置 (x, y) 添加一个矩形,具有给定的 widthheight,作为闭合子路径。

addRegion(region)
Parameters:

区域QRegion

通过将区域中的每个矩形添加为单独的闭合子路径,将给定的region添加到路径中。

另请参阅

addRect() 组合 一个 QPainterPath

addRoundedRect(rect, xRadius, yRadius[, mode=Qt.AbsoluteSize])
Parameters:
  • rectQRectF

  • xRadius – 浮点数

  • yRadius – 浮点数

  • modeSizeMode

将给定的带有圆角的矩形 rect 添加到路径中。

xRadiusyRadius 参数指定定义圆角矩形角落的椭圆的半径。当 mode 为 Qt::RelativeSize 时,xRadiusyRadius 分别以矩形宽度和高度的一半的百分比指定,并且应在 0.0 到 100.0 的范围内。

另请参阅

addRect()

addRoundedRect(x, y, w, h, xRadius, yRadius[, mode=Qt.AbsoluteSize])
Parameters:
  • x – 浮点数

  • y – 浮点数

  • w – 浮点数

  • h – 浮点数

  • xRadius – 浮点数

  • yRadius – 浮点数

  • modeSizeMode

这是一个重载函数。

将给定的带有圆角的矩形 x, y, w, h 添加到路径中。

addText(point, f, text)
Parameters:

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

将给定的text添加到此路径中,作为从提供的font创建的一组闭合子路径。子路径的位置使得文本基线的左端位于指定的point

某些字体可能会导致子路径重叠,需要Qt::WindingFill填充规则才能正确渲染。

qpainterpath-addtext1

myGradient = QLinearGradient()
myPen = QPen()
myFont = QFont()
baseline = QPointF(x, y)
myPath = QPainterPath()
myPath.addText(baseline, myFont, tr("Qt"))
painter = QPainter(self)
painter.setBrush(myGradient)
painter.setPen(myPen)
painter.drawPath(myPath)

另请参阅

drawText() 组合 一个 QPainterPath setFillRule()

addText(x, y, f, text)
Parameters:
  • x – 浮点数

  • y – 浮点数

  • fQFont

  • 文本 – str

这是一个重载函数。

将给定的text作为一组封闭的子路径添加到该路径中,这些子路径由提供的font创建。子路径的位置使得文本基线的左端位于由(x, y)指定的点。

angleAtPercent(t)
Parameters:

t – 浮点数

Return type:

浮点数

返回路径切线在百分比 t 处的角度。参数 t 必须在 0 和 1 之间。

角度的正值表示逆时针方向,而负值表示顺时针方向。零度位于3点钟位置。

请注意,与其他百分比方法类似,如果路径中存在曲线,百分比测量与长度不是线性的。当存在曲线时,百分比参数会映射到贝塞尔方程的 t 参数。

arcMoveTo(rect, angle)
Parameters:
  • rectQRectF

  • angle – 浮点数

创建一个位于给定rectangle上的弧线,该弧线位于angle处。

角度以度为单位指定。可以使用负角度指定顺时针弧线。

另请参阅

moveTo() arcTo()

arcMoveTo(x, y, w, h, angle)
Parameters:
  • x – 浮点数

  • y – 浮点数

  • w – 浮点数

  • h – 浮点数

  • angle – 浮点数

这是一个重载函数。

创建一个位于占据QRectF(x, y, width, height)的弧上的移动,角度为angle

arcTo(rect, startAngle, arcLength)
Parameters:
  • rectQRectF

  • startAngle – 浮点数

  • arcLength – 浮点数

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

创建一个占据给定rectangle的弧线,从指定的startAngle开始,并逆时针延伸sweepLength度。

角度以度为单位指定。可以使用负角度指定顺时针弧线。

请注意,如果弧线的起点与当前位置尚未连接,此函数会将它们连接起来。添加弧线后,当前位置是弧线的最后一个点。要绘制一条线回到第一个点,请使用closeSubpath()函数。

qpainterpath-arcto1

myPath = QPainterPath()
myPath.moveTo(center)
myPath.arcTo(boundingRect, startAngle,
             sweepLength)
painter = QPainter(self)
painter.setBrush(myGradient)
painter.setPen(myPen)
painter.drawPath(myPath)

另请参阅

arcMoveTo() addEllipse() drawArc() drawPie() 组合 一个 QPainterPath

arcTo(x, y, w, h, startAngle, arcLength)
Parameters:
  • x – 浮点数

  • y – 浮点数

  • w – 浮点数

  • h – 浮点数

  • startAngle – 浮点数

  • arcLength – 浮点数

这是一个重载函数。

创建一个占据矩形QRectF(x, y, width, height)的弧线,从指定的startAngle开始,并逆时针延伸sweepLength度。

boundingRect()
Return type:

QRectF

返回此绘制路径的边界矩形,作为一个具有浮点精度的矩形。

另请参阅

controlPointRect()

capacity()
Return type:

整数

返回由QPainterPath分配的元素数量。

另请参阅

clear() reserve()

clear()

清除存储的路径元素。

这允许路径重用之前的内存分配。

另请参阅

reserve() capacity()

closeSubpath()

通过绘制一条线到子路径的起点来关闭当前子路径,自动开始一个新路径。新路径的当前点是(0, 0)。

如果子路径不包含任何元素,此函数不执行任何操作。

另请参阅

moveTo() 组合 一个 QPainterPath

connectPath(path)
Parameters:

路径QPainterPath

通过添加一条从该路径的最后一个元素到给定路径的第一个元素的线,将给定的path连接到路径。

另请参阅

addPath() 组合 一个 QPainterPath

contains(p)
Parameters:

pQPainterPath

Return type:

布尔

如果给定路径 p 包含在当前路径中,则返回 true。如果当前路径和 p 的任何边相交,则返回 false

路径上的集合操作将把路径视为区域。非闭合路径将被视为隐式闭合。

另请参阅

intersects()

contains(pt)
Parameters:

ptQPointF

Return type:

布尔

如果给定的point在路径内,则返回true,否则返回false

另请参阅

intersects()

contains(rect)
Parameters:

矩形QRectF

Return type:

布尔

如果给定的rectangle在路径内,则返回true,否则返回false

controlPointRect()
Return type:

QRectF

返回包含此路径中所有点和控制点的矩形。

此函数的计算速度明显快于精确的boundingRect(),并且返回的矩形始终是boundingRect()返回矩形的超集。

另请参阅

boundingRect()

cubicTo(ctrlPt1, ctrlPt2, endPt)
Parameters:

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

在当前位置和给定的endPoint之间添加一条三次贝塞尔曲线,使用由c1c2指定的控制点。

添加曲线后,当前位置将更新为曲线的终点。

qpainterpath-cubicto1

myGradient = QLinearGradient()
myPen = QPen()
myPath = QPainterPath()
myPath.cubicTo(c1, c2, endPoint)
painter = QPainter(self)
painter.setBrush(myGradient)
painter.setPen(myPen)
painter.drawPath(myPath)

另请参阅

quadTo() 组合 一个 QPainterPath

cubicTo(ctrlPt1x, ctrlPt1y, ctrlPt2x, ctrlPt2y, endPtx, endPty)
Parameters:
  • ctrlPt1x – 浮点数

  • ctrlPt1y – 浮点数

  • ctrlPt2x – 浮点数

  • ctrlPt2y – 浮点数

  • endPtx – 浮点数

  • endPty – 浮点数

这是一个重载函数。

在当前位置和终点 (endPointX, endPointY) 之间添加一条三次贝塞尔曲线,控制点由 (c1X, c1Y) 和 (c2X, c2Y) 指定。

currentPosition()
Return type:

QPointF

返回路径的当前位置。

elementAt(i)
Parameters:

i – 整数

Return type:

Element

返回在绘制路径中给定index处的元素。

elementCount()
Return type:

整数

返回绘制路径中的路径元素数量。

fillRule()
Return type:

FillRule

返回画家路径当前设置的填充规则。

另请参阅

setFillRule()

intersected(r)
Parameters:

rQPainterPath

Return type:

QPainterPath

返回一个路径,该路径是此路径的填充区域与p的填充区域的交集。由于进行贝塞尔曲线交集的数值不稳定性,贝塞尔曲线可能会被展平为线段。

intersects(p)
Parameters:

pQPainterPath

Return type:

布尔

如果当前路径在任何点与给定路径 p 相交,则返回 true。如果当前路径包含或被 p 的任何部分包含,也返回 true

路径上的集合操作将把路径视为区域。非闭合路径将被视为隐式闭合。

另请参阅

contains()

intersects(rect)
Parameters:

矩形QRectF

Return type:

布尔

如果给定的rectangle中的任何点与路径相交,则返回true;否则返回false

如果构成矩形的任何一条线与路径的任何部分相交,或者矩形的任何部分与路径所包围的任何区域重叠,则存在交点。此函数遵循当前的fillRule来确定路径内部的内容。

另请参阅

contains()

isEmpty()
Return type:

布尔

如果此路径中没有元素,或者唯一元素是MoveToElement,则返回true;否则返回false

另请参阅

elementCount()

length()
Return type:

浮点数

返回当前路径的长度。

lineTo(p)
Parameters:

pQPointF

从当前位置到给定的endPoint添加一条直线。绘制完直线后,当前位置将更新为直线的终点。

另请参阅

addPolygon() addRect() 组合 一个 QPainterPath

lineTo(x, y)
Parameters:
  • x – 浮点数

  • y – 浮点数

这是一个重载函数。

从当前位置画一条线到点 (x, y)。

moveTo(p)
Parameters:

pQPointF

将当前点移动到给定的point,隐式地开始一个新的子路径并关闭前一个。

另请参阅

closeSubpath() 组合 一个 QPainterPath

moveTo(x, y)
Parameters:
  • x – 浮点数

  • y – 浮点数

这是一个重载函数。

将当前位置移动到 (x, y) 并开始一个新的子路径,隐式关闭前一个路径。

__ne__(other)
Parameters:

其他QPainterPath

Return type:

布尔

如果此画家路径与给定的path不同,则返回true

请注意,比较路径可能涉及逐个元素的比较,这对于复杂路径来说可能会很慢。

另请参阅

operator==()

__and__(other)
Parameters:

其他QPainterPath

Return type:

QPainterPath

返回此路径与other路径的交集。

另请参阅

intersected() operator&=() united() operator|()

__iand__(other)
Parameters:

其他QPainterPath

Return type:

QPainterPath

将此路径与 other 相交,并返回对此路径的引用。

另请参阅

intersected() operator&() operator|=()

__mul__(m)
Parameters:

mQTransform

Return type:

QPainterPath

__add__(other)
Parameters:

其他QPainterPath

Return type:

QPainterPath

返回此路径与other路径的并集。此函数等效于operator|()。

另请参阅

united() operator+=() operator-()

__iadd__(other)
Parameters:

其他QPainterPath

Return type:

QPainterPath

将此路径与other结合,并返回对此路径的引用。这相当于operator|=()。

另请参阅

united() operator+() operator-=()

__sub__(other)
Parameters:

其他QPainterPath

Return type:

QPainterPath

从该路径的副本中减去other路径,并返回副本。

另请参阅

subtracted() operator-=() operator+()

__isub__(other)
Parameters:

其他QPainterPath

Return type:

QPainterPath

从这个路径中减去other,并返回对此路径的引用。

另请参阅

subtracted() operator-() operator+=()

__eq__(other)
Parameters:

其他QPainterPath

Return type:

布尔

如果此painterpath等于给定的path,则返回true

请注意,比较路径可能涉及逐个元素的比较,这对于复杂路径来说可能会很慢。

另请参阅

operator!=()

__or__(other)
Parameters:

其他QPainterPath

Return type:

QPainterPath

返回此路径与other路径的并集。

另请参阅

united() operator|=() intersected() operator&()

__ior__(other)
Parameters:

其他QPainterPath

Return type:

QPainterPath

将此路径与 other 结合,并返回对此路径的引用。

另请参阅

united() operator|() operator&=()

percentAtLength(t)
Parameters:

t – 浮点数

Return type:

浮点数

返回指定长度 len 处整个路径的百分比。

请注意,与其他百分比方法类似,如果路径中存在曲线,百分比测量与长度不是线性的。当存在曲线时,百分比参数会映射到贝塞尔方程的 t 参数。

pointAtPercent(t)
Parameters:

t – 浮点数

Return type:

QPointF

返回当前路径在百分比 t 处的点。参数 t 必须在 0 和 1 之间。

请注意,与其他百分比方法类似,如果路径中存在曲线,百分比测量与长度不是线性的。当存在曲线时,百分比参数会映射到贝塞尔方程的 t 参数。

quadTo(ctrlPt, endPt)
Parameters:

在当前位置和给定的endPoint之间添加一个二次贝塞尔曲线,控制点由c指定。

添加曲线后,当前点更新为曲线的终点。

另请参阅

cubicTo() 组合 一个 QPainterPath

quadTo(ctrlPtx, ctrlPty, endPtx, endPty)
Parameters:
  • ctrlPtx – 浮点数

  • ctrlPty – 浮点数

  • endPtx – 浮点数

  • endPty – 浮点数

这是一个重载函数。

在当前点和终点 (endPointX, endPointY) 之间添加一个二次贝塞尔曲线,控制点由 (cx, cy) 指定。

reserve(size)
Parameters:

size – int

QPainterPath的内部内存中预留给定数量的元素。

尝试为至少size个元素分配内存。

另请参阅

clear() capacity() reserve()

setElementPositionAt(i, x, y)
Parameters:
  • i – 整数

  • x – 浮点数

  • y – 浮点数

将索引为 index 的元素的 x 和 y 坐标设置为 xy

setFillRule(fillRule)
Parameters:

fillRuleFillRule

将绘制路径的填充规则设置为给定的 fillRule。Qt 提供了两种填充路径的方法:

Qt::OddEvenFill(默认)

Qt::WindingFill

qt-fillrule-winding2

qt-fillrule-winding2

另请参阅

fillRule()

simplified()
Return type:

QPainterPath

返回此路径的简化版本。这意味着合并所有相交的子路径,并返回一个不包含相交边的路径。连续的平行线也将被合并。简化后的路径将始终使用默认的填充规则,Qt::OddEvenFill。由于贝塞尔曲线相交的数值不稳定性,贝塞尔曲线可能会被展平为线段。

slopeAtPercent(t)
Parameters:

t – 浮点数

Return type:

浮点数

返回路径在百分比 t 处的斜率。参数 t 必须在 0 和 1 之间。

请注意,与其他百分比方法类似,如果路径中存在曲线,百分比测量与长度不是线性的。当存在曲线时,百分比参数会映射到贝塞尔方程的 t 参数。

subtracted(r)
Parameters:

rQPainterPath

Return type:

QPainterPath

返回一个路径,该路径是从此路径的填充区域中减去p的填充区域。

路径上的集合操作将把路径视为区域。非闭合路径将被视为隐式闭合。由于贝塞尔曲线交点的数值不稳定性,贝塞尔曲线可能会被展平为线段。

swap(other)
Parameters:

其他QPainterPath

将此画家的路径与other交换。此操作非常快速且永远不会失败。

toFillPolygon([matrix=QTransform()])
Parameters:

矩阵QTransform

Return type:

QPolygonF

使用QTransform matrix将路径转换为多边形,并返回该多边形。

多边形是通过首先将所有子路径转换为多边形,然后使用重绕技术来确保可以使用正确的填充规则填充重叠的子路径。

请注意,回绕会在多边形中插入额外的线条,因此填充多边形的轮廓与路径的轮廓不匹配。

另请参阅

toSubpathPolygons() toFillPolygons() QPainterPath 转换

toFillPolygons([matrix=QTransform()])
Parameters:

矩阵QTransform

Return type:

QPolygonF的列表

使用QTransform matrix将路径转换为多边形列表,并返回该列表。

该函数与toFillPolygon()函数的不同之处在于它创建了多个多边形。提供此函数的原因是,尽管绘制的总点数相同,但绘制多个小多边形通常比绘制一个大多边形更快。

toFillPolygons() 函数与 toSubpathPolygons() 函数的不同之处在于,它只为具有重叠边界矩形的子路径创建多边形。

toFillPolygon()函数类似,此函数使用重绕技术来确保可以使用正确的填充规则填充重叠的子路径。请注意,重绕会在多边形中插入额外的线条,因此填充多边形的轮廓与路径的轮廓不匹配。

另请参阅

toSubpathPolygons() toFillPolygon() QPainterPath 转换

toReversed()
Return type:

QPainterPath

创建并返回路径的反向副本。

元素的顺序被反转了:如果一个QPainterPath是通过按指定顺序调用moveTo()lineTo()cubicTo()函数来组成的,那么反转的副本是通过调用cubicTo()lineTo()moveTo()来组成的。

toSubpathPolygons([matrix=QTransform()])
Parameters:

矩阵QTransform

Return type:

QPolygonF的列表

使用QTransform matrix将路径转换为多边形列表,并返回该列表。

此函数为每个子路径创建一个多边形,无论子路径是否相交(即重叠的边界矩形)。为了确保正确填充这些重叠的子路径,请改用toFillPolygons()函数。

另请参阅

toFillPolygons() toFillPolygon() QPainterPath 转换

translate(offset)
Parameters:

偏移量QPointF

这是一个重载函数。

通过给定的offset平移路径中的所有元素。

另请参阅

translated()

translate(dx, dy)
Parameters:
  • dx – 浮点数

  • dy – 浮点数

将路径中的所有元素平移(dx, dy)。

另请参阅

translated()

translated(offset)
Parameters:

偏移量QPointF

Return type:

QPainterPath

这是一个重载函数。

返回通过给定offset平移后的路径副本。

另请参阅

translate()

translated(dx, dy)
Parameters:
  • dx – 浮点数

  • dy – 浮点数

Return type:

QPainterPath

返回一个通过(dx, dy)平移后的路径副本。

另请参阅

translate()

united(r)
Parameters:

rQPainterPath

Return type:

QPainterPath

返回一个路径,该路径是此路径的填充区域与p的填充区域的并集。

路径上的集合操作将把路径视为区域。非闭合路径将被视为隐式闭合。由于贝塞尔曲线交点的数值不稳定性,贝塞尔曲线可能会被展平为线段。

class Element

Element 类指定了子路径的位置和类型。More_

概要

方法

注意

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

详细描述

一旦构建了一个QPainterPath对象,就可以向路径中添加子路径,如直线和曲线(创建LineToElementCurveToElement组件)。

线条和曲线从currentPosition()延伸到作为参数传递的位置。QPainterPath对象的currentPosition()始终是最后添加的子路径的结束位置(或初始起点)。moveTo()函数可用于移动currentPosition()而不添加线条或曲线,从而创建一个MoveToElement组件。

另请参阅

QPainterPath

PySide6.QtGui.QPainterPath.Element.x
PySide6.QtGui.QPainterPath.Element.y
PySide6.QtGui.QPainterPath.Element.type
isCurveTo()
Return type:

布尔

如果元素是曲线,则返回 true,否则返回 false

另请参阅

type CurveToElement

isLineTo()
Return type:

布尔

如果元素是一条线,则返回 true,否则返回 false

另请参阅

type LineToElement

isMoveTo()
Return type:

布尔

如果元素正在移动当前位置,则返回 true,否则返回 false

另请参阅

type MoveToElement

__ne__(e)
Parameters:

eElement

Return type:

布尔

如果此元素不等于 other,则返回 true;否则返回 false

另请参阅

operator==()

__eq__(e)
Parameters:

e元素

Return type:

布尔

如果此元素等于other,则返回true;否则返回false

另请参阅

operator!=()