PySide6.QtGui.QRegion

class QRegion

QRegion 类为画家指定了一个裁剪区域。更多

概要

方法

注意

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

详细描述

警告

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

QRegionsetClipRegion() 一起使用,以将绘制区域限制在需要绘制的部分。还有一个 QWidget::repaint() 函数,它接受一个 QRegion 参数。QRegion 是减少重绘时需要更新的屏幕区域的最佳工具。

此类不适合用于构建渲染形状,特别是轮廓。使用QPainterPath来创建路径和形状,以便与QPainter一起使用。

QRegion 是一个隐式共享类。

创建和使用区域

可以从矩形、椭圆、多边形或位图创建区域。可以通过使用united()intersected()subtracted()xored()(异或)组合简单区域来创建复杂区域。您可以使用translate()移动区域。

你可以测试一个区域是否isEmpty()或者它是否contains()一个QPoint或QRect。边界矩形可以通过boundingRect()找到。

遍历区域(使用begin()end()或范围for循环)将区域分解为矩形。

使用复杂区域的示例:

def paintEvent(self, arg__0):

    QRegion r1(QRect(100, 100, 200, 80), // r1: elliptic region
               QRegion.Ellipse)
    QRegion r2(QRect(100, 120, 90, 30)) # r2: rectangular region
    r3 = r1.intersected(r2) # r3: intersection
    painter = QPainter(self)
    painter.setClipRegion(r3)
    # ...                                  // paint clipped graphics
class RegionType

指定要创建的区域的形状。

常量

描述

QRegion.Rectangle

该区域覆盖整个矩形。

QRegion.Ellipse

该区域是矩形内的一个椭圆。

__init__()

构建一个空区域。

另请参阅

isEmpty()

__init__(bitmap)
Parameters:

位图QBitmap

从位图 bm 构造一个区域。

生成的区域由位图 bm 中为 Qt::color1 的像素组成,就好像每个像素是一个 1x1 的矩形。

此构造函数可能会创建复杂的区域,使用时会减慢绘制速度。请注意,使用setMask()可以更快地绘制遮罩位图。

__init__(region)
Parameters:

区域QRegion

构造一个与区域 r 相等的新区域。

__init__(pa[, fillRule=Qt.OddEvenFill])
Parameters:

从点数组 a 构造一个多边形区域,填充规则由 fillRule 指定。

如果 fillRule 是 Qt::WindingFill,则使用环绕算法定义多边形区域;如果是 Qt::OddEvenFill,则使用奇偶填充算法。

警告

此构造函数可用于创建复杂区域,使用时会减慢绘制速度。

__init__(r[, t=QRegion.RegionType.Rectangle])
Parameters:

这是一个重载函数。

基于矩形 r 创建一个区域,区域类型为 t

如果矩形无效,将创建一个空区域。

另请参阅

RegionType

__init__(x, y, w, h[, t=QRegion.RegionType.Rectangle])
Parameters:
  • x – 整数

  • y – 整数

  • w – 整数

  • h – 整数

  • tRegionType

构建一个矩形或椭圆形区域。

如果 tRectangle,区域是填充的矩形 (x, y, w, h)。如果 tEllipse,区域是以 (x + w / 2, y + h / 2) 为中心,大小为 (w ,``h``) 的填充椭圆。

__getitem__()
__len__()
begin()
Return type:

QRect

返回一个指向构成该区域的非重叠矩形范围开头的const_iterator

所有矩形的并集等于原始区域。

另请参阅

rbegin() cbegin() end()

boundingRect()
Return type:

QRect

返回此区域的边界矩形。空区域会返回一个QRect::isNull()的矩形。

cbegin()
Return type:

QRect

begin() 相同。

cend()
Return type:

QRect

end() 相同。

contains(p)
Parameters:

pQPoint

Return type:

布尔

如果区域包含点 p,则返回 true;否则返回 false

contains(r)
Parameters:

rQRect

Return type:

布尔

这是一个重载函数。

如果区域与矩形 r 重叠,则返回 true;否则返回 false

end()
Return type:

QRect

返回一个指向构成区域的不重叠矩形末尾的const_iterator

所有矩形的并集等于原始区域。

另请参阅

rend() cend() begin()

intersected(r)
Parameters:

rQRect

Return type:

QRegion

返回一个区域,该区域是此区域与给定的rect的交集。

intersected(r)
Parameters:

rQRegion

Return type:

QRegion

返回一个区域,该区域是此区域与r的交集。

../../_images/rintersect.png

该图显示了两个椭圆区域的交集。

intersects(r)
Parameters:

rQRect

Return type:

布尔

如果此区域与 rect 相交,则返回 true,否则返回 false

intersects(r)
Parameters:

rQRegion

Return type:

布尔

如果此区域与region相交,则返回true,否则返回false

isEmpty()
Return type:

布尔

警告

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

如果区域为空,则返回true;否则返回false。空区域是指不包含任何点的区域。

示例:

r1 = QRegion(10, 10, 20, 20)
r1.isEmpty() # false
r3 = QRegion()
r3.isEmpty() # true
r2 = QRegion(40, 40, 20, 20)
r3 = r1.intersected(r2) # r3: intersection of r1 and r2
r3.isEmpty() # true
r3 = r1.united(r2) # r3: union of r1 and r2
r3.isEmpty() # false
isNull()
Return type:

布尔

如果区域为空,则返回true;否则返回false。空区域是指不包含任何点的区域。此函数与isEmpty相同。

另请参阅

isEmpty()

__ne__(r)
Parameters:

rQRegion

Return type:

布尔

如果此区域与other区域不同,则返回true;否则返回false

__and__(r)
Parameters:

rQRect

Return type:

QRegion

这是一个重载函数。

__and__(r)
Parameters:

rQRegion

Return type:

QRegion

intersected()函数应用于此区域和rr1&r2等同于r1.intersected(r2)

另请参阅

intersected()

__mul__(m)
Parameters:

mQTransform

Return type:

QRegion

__add__(r)
Parameters:

rQRect

Return type:

QRegion

这是一个重载函数。

__add__(r)
Parameters:

rQRegion

Return type:

QRegion

united()函数应用于此区域和rr1+r2等同于r1.united(r2)

另请参阅

united() operator|()

__iadd__(r)
Parameters:

rQRect

Return type:

QRegion

返回一个区域,该区域是此区域与指定的rect的并集。

另请参阅

united()

__iadd__(r)
Parameters:

rQRegion

Return type:

QRegion

united()函数应用于此区域和r,并将结果分配到此区域。r1+=r2等同于r1 = r1.united(r2)

另请参阅

intersected()

__sub__(r)
Parameters:

rQRegion

Return type:

QRegion

subtracted()函数应用于此区域和rr1-r2等同于r1.subtracted(r2)

另请参阅

subtracted()

__isub__(r)
Parameters:

rQRegion

Return type:

QRegion

subtracted()函数应用于此区域和r,并将结果分配给此区域。r1-=r2等同于r1 = r1.subtracted(r2)

另请参阅

subtracted()

__eq__(r)
Parameters:

rQRegion

Return type:

布尔

如果区域等于 r,则返回 true;否则返回 false。

__xor__(r)
Parameters:

rQRegion

Return type:

QRegion

xored()函数应用于此区域和rr1^r2等同于r1.xored(r2)

另请参阅

xored()

__ixor__(r)
Parameters:

rQRegion

Return type:

QRegion

xored()函数应用于此区域和r,并将结果分配给此区域。r1^=r2等同于r1 = r1.xored(r2)

另请参阅

xored()

__or__(r)
Parameters:

rQRegion

Return type:

QRegion

united()函数应用于此区域和rr1|r2等同于r1.united(r2)

另请参阅

united() operator+()

__ior__(r)
Parameters:

rQRegion

Return type:

QRegion

united()函数应用于此区域和r,并将结果分配给此区域。r1|=r2等同于r1 = r1.united(r2)

另请参阅

united()

rectCount()
Return type:

整数

返回此区域由多少个矩形组成。与end() - begin()相同。

setRects(rect, num)
Parameters:
  • rectQRect

  • num – 整数

这是一个重载函数。

请改用 QSpan 重载。

subtracted(r)
Parameters:

rQRegion

Return type:

QRegion

返回一个区域,该区域是从此区域中减去r的结果。

../../_images/rsubtract.png

该图显示了从左侧椭圆中减去右侧椭圆的结果(left - right)。

swap(other)
Parameters:

其他QRegion

将此区域与other区域交换。此操作非常快速且永远不会失败。

translate(p)
Parameters:

pQPoint

这是一个重载函数。

将区域 point .x() 沿x轴和 point .y() 沿y轴平移,相对于当前位置。正值将区域向右和向下移动。

翻译到给定的point

translate(dx, dy)
Parameters:
  • dx – 整数

  • dy – 整数

将区域沿X轴平移dx,沿Y轴平移dy

translated(p)
Parameters:

pQPoint

Return type:

QRegion

这是一个重载函数。

返回一个相对于当前位置沿x轴平移p .x()和沿y轴平移p .y()的矩形副本。正值将矩形向右和向下移动。

另请参阅

translate()

translated(dx, dy)
Parameters:
  • dx – 整数

  • dy – 整数

Return type:

QRegion

返回一个区域的副本,该区域相对于当前位置沿x轴平移dx,沿y轴平移dy。正值将区域向右和向下移动。

另请参阅

translate()

united(r)
Parameters:

rQRect

Return type:

QRegion

返回一个区域,该区域是此区域与给定的rect的并集。

united(r)
Parameters:

rQRegion

Return type:

QRegion

返回一个区域,该区域是此区域与r的并集。

../../_images/runion.png

该图显示了两个椭圆区域的并集。

xored(r)
Parameters:

rQRegion

Return type:

QRegion

返回一个区域,该区域是此区域与r的异或(XOR)结果。

../../_images/rxor.png

该图显示了两个椭圆区域的异或。