PySide6.QtGui.QRegion¶
- class QRegion¶
-
概要¶
方法¶
def
__init__()def
__getitem__()def
__len__()def
begin()def
boundingRect()def
cbegin()def
cend()def
contains()def
end()def
intersected()def
intersects()def
isEmpty()def
isNull()def
__ne__()def
__and__()def
__mul__()def
__add__()def
__iadd__()def
__sub__()def
__isub__()def
__eq__()def
__xor__()def
__ixor__()def
__or__()def
__ior__()def
rectCount()def
setRects()def
subtracted()def
swap()def
translate()def
translated()def
united()def
xored()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
QRegion与setClipRegion()一起使用,以将绘制区域限制在需要绘制的部分。还有一个 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__()¶
构建一个空区域。
另请参阅
- __init__(bitmap)
- Parameters:
位图 –
QBitmap
从位图
bm构造一个区域。生成的区域由位图
bm中为 Qt::color1 的像素组成,就好像每个像素是一个 1x1 的矩形。此构造函数可能会创建复杂的区域,使用时会减慢绘制速度。请注意,使用
setMask()可以更快地绘制遮罩位图。- __init__(region)
- Parameters:
区域 –
QRegion
构造一个与区域
r相等的新区域。从点数组
a构造一个多边形区域,填充规则由fillRule指定。如果
fillRule是 Qt::WindingFill,则使用环绕算法定义多边形区域;如果是 Qt::OddEvenFill,则使用奇偶填充算法。警告
此构造函数可用于创建复杂区域,使用时会减慢绘制速度。
- __init__(r[, t=QRegion.RegionType.Rectangle])
- Parameters:
r –
QRectt –
RegionType
这是一个重载函数。
基于矩形
r创建一个区域,区域类型为t。如果矩形无效,将创建一个空区域。
另请参阅
- __init__(x, y, w, h[, t=QRegion.RegionType.Rectangle])
- Parameters:
x – 整数
y – 整数
w – 整数
h – 整数
t –
RegionType
构建一个矩形或椭圆形区域。
如果
t是Rectangle,区域是填充的矩形 (x,y,w,h)。如果t是Ellipse,区域是以 (x+w/ 2,y+h/ 2) 为中心,大小为 (w,``h``) 的填充椭圆。- __getitem__()¶
- __len__()¶
返回一个指向构成该区域的非重叠矩形范围开头的
const_iterator。所有矩形的并集等于原始区域。
返回此区域的边界矩形。空区域会返回一个QRect::isNull()的矩形。
与
begin()相同。与
end()相同。如果区域包含点
p,则返回true;否则返回false。- contains(r)
- Parameters:
r –
QRect- Return type:
布尔
这是一个重载函数。
如果区域与矩形
r重叠,则返回true;否则返回false。返回一个指向构成区域的不重叠矩形末尾的
const_iterator。所有矩形的并集等于原始区域。
返回一个区域,该区域是此区域与给定的
rect的交集。另请参阅
返回一个区域,该区域是此区域与
r的交集。
该图显示了两个椭圆区域的交集。
另请参阅
如果此区域与
rect相交,则返回true,否则返回false。- intersects(r)
- Parameters:
r –
QRegion- 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相同。另请参阅
如果此区域与
other区域不同,则返回true;否则返回false。这是一个重载函数。
将
intersected()函数应用于此区域和r。r1&r2等同于r1.intersected(r2)。另请参阅
- __mul__(m)¶
- Parameters:
m –
QTransform- Return type:
这是一个重载函数。
将
united()函数应用于此区域和r。r1+r2等同于r1.united(r2)。另请参阅
united()operator|()返回一个区域,该区域是此区域与指定的
rect的并集。另请参阅
将
united()函数应用于此区域和r,并将结果分配到此区域。r1+=r2等同于r1 = r1.united(r2)。另请参阅
将
subtracted()函数应用于此区域和r。r1-r2等同于r1.subtracted(r2)。另请参阅
将
subtracted()函数应用于此区域和r,并将结果分配给此区域。r1-=r2等同于r1 = r1.subtracted(r2)。另请参阅
如果区域等于
r,则返回true;否则返回 false。将
xored()函数应用于此区域和r。r1^r2等同于r1.xored(r2)。另请参阅
将
xored()函数应用于此区域和r,并将结果分配给此区域。r1^=r2等同于r1 = r1.xored(r2)。另请参阅
将
united()函数应用于此区域和r。r1|r2等同于r1.united(r2)。另请参阅
united()operator+()将
united()函数应用于此区域和r,并将结果分配给此区域。r1|=r2等同于r1 = r1.united(r2)。另请参阅
- rectCount()¶
- Return type:
整数
返回此区域由多少个矩形组成。与
end() - begin()相同。这是一个重载函数。
请改用 QSpan 重载。
返回一个区域,该区域是从此区域中减去
r的结果。
该图显示了从左侧椭圆中减去右侧椭圆的结果(
left - right)。另请参阅
将此区域与
other区域交换。此操作非常快速且永远不会失败。这是一个重载函数。
将区域
point.x() 沿x轴和point.y() 沿y轴平移,相对于当前位置。正值将区域向右和向下移动。翻译到给定的
point。- translate(dx, dy)
- Parameters:
dx – 整数
dy – 整数
将区域沿X轴平移
dx,沿Y轴平移dy。这是一个重载函数。
返回一个相对于当前位置沿x轴平移
p.x()和沿y轴平移p.y()的矩形副本。正值将矩形向右和向下移动。另请参阅
- translated(dx, dy)
- Parameters:
dx – 整数
dy – 整数
- Return type:
返回一个区域的副本,该区域相对于当前位置沿x轴平移
dx,沿y轴平移dy。正值将区域向右和向下移动。另请参阅
返回一个区域,该区域是此区域与给定的
rect的并集。返回一个区域,该区域是此区域与
r的并集。
该图显示了两个椭圆区域的并集。
返回一个区域,该区域是此区域与
r的异或(XOR)结果。
该图显示了两个椭圆区域的异或。