class QPainterPath#

QPainterPath 为绘制操作提供了容器,使得可以构建和重复使用图形形状。更多...

概要#

方法#

注意

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

详细描述#

警告

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

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

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

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

组合QPainterPath

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

对象 currentPosition() 的当前位置始终是最近添加的子路径的结束位置(或初始起始点)。使用 moveTo() 函数可以移动当前位置而不添加组件。函数 moveTo() 默认开始一个新的子路径,并关闭之前的子路径。另一种开始新的子路径的方法是调用函数 closeSubpath(),它会通过添加线条从当前 currentPosition() 返回路径的起始位置,来关闭当前路径。请注意,新路径将具有 (0, 0) 作为其初始 currentPosition()

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-oddeven2

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 的示例目录中。

“画家路径示例”展示了如何使用画家路径构建用于渲染的复杂形状,并允许用户试验填充和描边。矢量变形示例展示了如何使用 QPainterPath 绘制文本。

画家路径示例

矢量变形示例

qpainterpath-example4

qpainterpath-demo5

另请参阅

QPainterPathStroker QPainter QRegion
图路径

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__(other)#
参数:

otherQPainterPath

创建一个副本的给定路径的 QPainterPath 对象。

另请参阅

operator=()

__init__()

构建一个空的 QPainterPath 对象。

__init__(startPoint)
参数:

startPointQPointF

创建一个以给定的 startPoint 为当前位置的 QPainterPath 对象。

addEllipse(center, rx, ry)#
参数:
  • centerQPointF

  • rx – float

  • ry – float

这是一个重载函数。

center 位置创建一个半径为 rxry 的椭圆,并将其作为闭合子路径添加到画家路径中。

addEllipse(x, y, w, h)
参数:
  • x – float

  • y – float

  • w – float

  • h – float

这是一个重载函数。

在由其左上角在 (x, y),宽度 width 和高度 height 定义的边界矩形内创建一个椭圆,并将其作为闭合子路径添加到画家路径中。

addEllipse(rect)
参数:

rectQRectF

警告

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

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

椭圆由顺时针方向的曲线组成,从0度(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() 合成 a QPainterPath

addPath(path)#
参数:

pathQPainterPath

将指定的路径作为子路径添加到当前路径中。

另请参阅

connectPath() 组合 QPainterPath

addPolygon(polygon)#
参数:

polygonQPolygonF

警告

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

将指定的多边形作为子路径添加到路径中。

注意,在多边形添加之后,当前位置是多边形的最后一个点。要绘制一条线回到第一个点,请使用 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)#
参数:

rectQRectF

警告

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

将指定的矩形作为子路径添加到当前路径中。

矩形以顺时针的方式添加为线集。在添加矩形之后,绘制路径的当前位置在矩形的左上角。

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)
参数:
  • x – float

  • y – float

  • w – float

  • h – float

这是一个重载函数。

在位置(xy)处添加一个矩形,宽度为 width ,高度为 height ,作为一个封闭的子路径。

addRegion(region)#
参数:

区域QRegion

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

另请参阅

addRect() 组合 QPainterPath

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

  • xRadius – float

  • yRadius – float

  • modeSizeMode

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

参数 xRadiusyRadius 指定了构成圆角矩形角落的椭圆的半径。当 mode 为 Qt::RelativeSize 时,xRadiusyRadius 分别指定为矩形宽度和高的一半的百分比,范围应在 0.0 到 100.0 之间。

另请参阅

addRect()

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

  • y – float

  • w – float

  • h – float

  • xRadius – float

  • yRadius – float

  • modeSizeMode

这是一个重载函数。

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

addText(point, f, text)#
参数:

警告

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

将给定的 文本 添加到路径中,作为由提供的 字体 生成的封闭子路径集合。子路径的位置使得文本基线的左侧端点位于指定的 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)
参数:
  • x – float

  • y – float

  • fQFont

  • text – str

这是一个重载函数。

将指定的 text 添加到此路径中,作为由提供的 font 生成的闭合子路径集。子路径的位置使得文本基线的左侧端点位于指定的点 (x, y)。

angleAtPercent(t)#
参数:

t – float

返回类型:

float

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

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

注意,与其他百分比方法类似,当路径中有曲线时,百分比的测量不是与长度成线性关系的。当路径中有曲线时,百分比参数映射到 Bezier 方程的 t 参数。

arcMoveTo(rect, angle)#
参数:
  • rectQRectF

  • angle – float

创建一个位于给定 rectangle 中弧线上的移动。

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

另请参阅

moveTo() arcTo()

arcMoveTo(x, y, w, h, angle)
参数:
  • x – float

  • y – float

  • w – float

  • h – float

  • angle – float

这是一个重载函数。

创建一个位于给定的 QRectF(x, y, width, height) 在 angle 处的弧线上的移动。

arcTo(x, y, w, h, startAngle, arcLength)#
参数:
  • x – float

  • y – float

  • w – float

  • h – float

  • startAngle – 浮点数

  • arcLength – 浮点数

这是一个重载函数。

创建一个占据矩形QRectF(x, y, width, height)的圆弧,从指定的startAngle开始,并以逆时针方向扩展sweepLength度。

arcTo(rect, startAngle, arcLength)
参数:
  • rectQRectF

  • startAngle – 浮点数

  • arcLength – 浮点数

警告

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

创建一个占据给定矩形rect的圆弧,从指定的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() Composing a QPainterPath

boundingRect()#
返回类型:

QRectF

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

另请参阅

controlPointRect()

capacity()#
返回类型:

int

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

另请参阅

clear() reserve()

clear()#

清除存储的路径元素。

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

另请参阅

reserve() capacity()

closeSubpath()#

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

如果子路径不包含任何元素,此函数不起作用。

另请参阅

moveTo() 组合 QPainterPath

connectPath(path)#
参数:

pathQPainterPath

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

另请参阅

addPath() 组合 QPainterPath

contains(p)#
参数:

pQPainterPath

返回类型:

bool

如果给定的路径p位于当前路径内,返回true。如果当前路径的任何边与p相交,返回false

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

另请参阅

intersects()

contains(pt)
参数:

ptQPointF

返回类型:

bool

如果给定的点位于路径内,则返回true,否则返回false

另请参阅

intersects()

contains(rect)
参数:

rectQRectF

返回类型:

bool

如果给定的矩形位于路径内,则返回true,否则返回false

controlPointRect()#
返回类型:

QRectF

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

此函数的运算速度比精确的 boundingRect() 明显快,并且返回的矩形总是包含由 boundingRect() 返回的矩形。

另请参阅

boundingRect()

cubicTo(ctrlPt1, ctrlPt2, endPt)#
参数:

警告

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

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

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

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)
参数:
  • ctrlPt1x – float

  • ctrlPt1y – float

  • ctrlPt2x – float

  • ctrlPt2y – float

  • endPtx – float

  • endPty – float

这是一个重载函数。

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

currentPosition()#
返回类型:

QPointF

返回路径的当前位置。

elementAt(i)#
参数:

i – int

返回类型:

元素

返回画家画路径中指定 index 的元素。

elementCount()#
返回类型:

int

返回画家画路径中路径元素的数目。

fillRule()#
返回类型:

填充规则

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

另请参阅

setFillRule()

intersected(r)#
参数:

rQPainterPath

返回类型:

QPainterPath

返回一个路径,它是该路径填充区域与 p's 填充区域的交集。由于贝塞尔曲线交集的数值不稳定,贝塞尔曲线可能会被简化为线段。

intersects(rect)#
参数:

rectQRectF

返回类型:

bool

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

如果矩形的任意一行与路径的某一部分相交,或者矩形的任何一部分与路径包围的任何区域重叠,则存在交集。此函数根据当前 fillRule 确定路径内部应考虑的内容。

另请参阅

contains()

intersects(p)
参数:

pQPainterPath

返回类型:

bool

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

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

另请参阅

contains()

isEmpty()#
返回类型:

bool

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

另请参阅

elementCount()

length()#
返回类型:

float

返回当前路径的长度。

lineTo(p)#
参数:

参数

QPointF

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

另请参阅

addPolygon() addRect() 组合 QPainterPath

lineTo(x, y)
参数:
  • x – float

  • y – float

这是一个重载函数。

从当前位置绘制到点 (x, y) 的直线。

moveTo(p)#
参数:

参数

QPointF

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

另请参阅

closeSubpath() 组合 QPainterPath

moveTo(x, y)
参数:
  • x – float

  • y – float

这是一个重载函数。

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

__ne__(other)#
参数:

otherQPainterPath

返回类型:

bool

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

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

另请参阅

operator==()

__and__(other)#
参数:

otherQPainterPath

返回类型:

QPainterPath

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

另请参阅

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

__iand__(other)#
参数:

otherQPainterPath

返回类型:

QPainterPath

与此路径交叉,并返回对此路径的引用。

另请参阅

intersected() operator&() operator|()

__mul__(m)#
参数:

mQTransform

返回类型:

QPainterPath

__add__(other)#
参数:

otherQPainterPath

返回类型:

QPainterPath

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

另请参阅

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

__iadd__(other)#
参数:

otherQPainterPath

返回类型:

QPainterPath

与此路径合并,并返回对此路径的引用。这等价于operator|=()。

另请参阅

united() operator+() operator-()

__sub__(other)#
参数:

otherQPainterPath

返回类型:

QPainterPath

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

另请参阅

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

__isub__(other)#
参数:

otherQPainterPath

返回类型:

QPainterPath

从当前路径中减去 other,并返回当前路径的引用。

另请参阅

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

__eq__(other)#
参数:

otherQPainterPath

返回类型:

bool

如果此绘图路径等于给定的 path,则返回 true

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

另请参阅

operator!=()

__or__(other)#
参数:

otherQPainterPath

返回类型:

QPainterPath

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

另请参阅

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

__ior__(other)#
参数:

otherQPainterPath

返回类型:

QPainterPath

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

另请参阅

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

percentAtLength(t)#
参数:

t – float

返回类型:

float

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

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

pointAtPercent(t)#
参数:

t – float

返回类型:

QPointF

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

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

quadTo(ctrlPtx, ctrlPty, endPtx, endPty)#
参数:
  • ctrlPtx – float

  • ctrlPty – float

  • endPtx – float

  • endPty – float

这是一个重载函数。

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

quadTo(ctrlPt, endPt)
参数:

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

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

另请参阅

cubicTo() 《组合QPainterPath》

reserve(size)#
参数:

size – int

在《QPainterPath》的内部内存中保留指定数量的元素。

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

另请参阅

clear() 《clear()》capacity() 《capacity()》reserve()

setElementPositionAt(i, x, y)#
参数:
  • i – int

  • x – float

  • y – float

将索引《index》处的元素x和y坐标设置为《x`和《y`。

setFillRule(fillRule)#
参数:

fillRuleFillRule

将画家路径的填充规则设置为给定的《fillRule》。Qt提供了两种路径填充的方法

Qt::OddEvenFill(默认)

Qt::WindingFill

qt-fillrule-oddeven1

qt-fillrule-winding2

另请参阅

fillRule()

simplified()#
返回类型:

QPainterPath

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

slopeAtPercent(t)#
参数:

t – float

返回类型:

float

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

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

subtracted(r)#
参数:

rQPainterPath

返回类型:

QPainterPath

返回一个路径,它是从该路径的填充区域减去此路径的填充区域的结果。

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

swap(other)#
参数:

otherQPainterPath

交换画家路径other与此画家路径。这个操作非常快,永远不会失败。

toFillPolygon([matrix=QTransform()])#
参数:

matrixQTransform

返回类型:

QPolygonF

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

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

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

另请参阅

toSubpathPolygons() toFillPolygons() QPainterPath 转换

toFillPolygons([matrix=QTransform()])#
参数:

matrixQTransform

返回类型:

. QPolygonF列表

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

该函数与toFillPolygon()函数的区别在于它会创建多个多边形。之所以提供该函数,是因为通常绘制多个小多边形的速度比绘制一个大多边形快,尽管绘制的点总数相同。

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

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

另请参阅

toSubpathPolygons() toFillPolygon() QPainterPath Conversion

toReversed()#
返回类型:

QPainterPath

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

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

toSubpathPolygons([matrix=QTransform()])#
参数:

matrixQTransform

返回类型:

. QPolygonF列表

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

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

另请参阅

toFillPolygons() toFillPolygon() QPainterPath Conversion

translate(offset)#
参数:

offsetQPointF

这是一个重载函数。

将路径中所有元素平移指定的offset

另请参阅

translated()

translate(dx, dy)
参数:
  • dx – float

  • dy – float

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

另请参阅

translated()

translated(offset)#
参数:

offsetQPointF

返回类型:

QPainterPath

这是一个重载函数。

返回一个新路径,该路径通过给定的offset进行了平移。

另请参阅

translate()

translated(dx, dy)
参数:
  • dx – float

  • dy – float

返回类型:

QPainterPath

返回一个新路径,该路径通过(dx, dy)进行了平移。

另请参阅

translate()

united(r)#
参数:

rQPainterPath

返回类型:

QPainterPath

返回一个新路径,它是此路径的填充区域和白方路径填充区域的并集。

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