- 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__()
定义
__mul__()
定义
__add__()
定义
__iadd__()
定义
__sub__()
定义
__isub__()
定义
__eq__()
定义
__xor__()
定义
__ixor__()
定义
__or__()
定义
__ior__()
定义
rectCount()
定义
setRects()
定义
subtracted()
定义
swap()
定义
translate()
定义
translated()
定义
united()
定义
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()
移动区域。你可以测试一个区域是否为空或它是否包含一个
QRegion
或一个QRect
。边界矩形可以通过boundingRect()
找到。遍历区域(使用
begin()
、end()
或范围循环)将区域分解为矩形。使用复杂区域的示例
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
该区域是矩形内部的椭圆。
从位图
bm
构造一个区域。得到的区域由位图
bm
中的 Qt::color1 像素组成,每个像素相当于一个 1x1 的矩形。这个构造函数可能会创建复杂的区域,当使用时会慢化绘图过程。注意,使用
setMask()
可以快速绘制带遮罩的像素图。- __init__()
构造一个空区域。
另请参阅
- __init__(x, y, w, h[, t=QRegion.RegionType.Rectangle])
- 参数:
x – int
y – int
w – int
h – int
t –
RegionType
构建一个矩形或椭圆形区域。
如果
t
是Rectangle
,则该区域是填充的矩形(x, y, w, h
)。如果t
是Ellipse
,则该区域是以(x + w / 2, y + h / 2
)为中心,尺寸为(w, h
)的填充椭圆。- __init__(region)
- 参数:
region –
QRegion
构建一个与区域
r
相等的新区域。使用点数组
a
和通过fillRule
指定的填充规则,构建多边形区域。如果
fillRule
是 Qt::WindingFill,则多边形区域通过旋转算法定义;如果它是 Qt::OddEvenFill,则使用奇偶填充算法。警告
此构造函数可用于创建复杂区域,当使用时可能会减慢绘图速度。
- __init__(r[, t=QRegion.RegionType.Rectangle])
- 参数:
r –
QRect
t –
RegionType
这是一个重载函数。
基于矩形
r
和区域类型t
创建区域。如果矩形无效,将创建一个空区域。
另请参阅
- __getitem__()#
- __len__()#
返回一个指向构成区域的非重叠矩形范围的开始位置的
const_iterator
所有矩形的并集等于原始区域。
返回此区域的边界矩形。空区域给出的是 QRect::isNull() 的矩形。
与
begin()
相同。与
end()
相同。这是一个重载函数。
如果区域与矩形
r
交叉,则返回true
;否则返回false
。- contains(p)
- 参数:
p –
QPoint
- 返回类型::
bool
如果区域包含点
p
,则返回true
;否则返回false
。返回一个指向区域组成的不重叠矩形的末尾之后的
const_iterator
。所有矩形的并集等于原始区域。
返回一个区域,它是此区域和给定的
rect
的交集。另请参阅
返回一个区域,它是此区域和
r
的交集。图显示了两个椭圆区域的交集。
另请参阅
如果此区域与
rect
交叉,则返回true
,否则返回false
。- intersects(r)
- 参数:
r –
QRegion
- 返回类型::
bool
如果此区域与
region
交叉,则返回true
,否则返回false
。- isEmpty()#
- 返回类型::
bool
警告
本节包含从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()#
- 返回类型::
bool
如果该区域为空,则返回
true
;否则返回false
。空区域是不包含任何点的区域。此函数与isEmpty
另请参阅
如果此区域与另一个区域不同,则返回
true
;否则返回false
。将
intersected()
函数应用于此区域和r
。r1&r2
与r1.intersected(r2)
等价。另请参阅
这是一个重载函数。
- __mul__m(#
- 参数:
m –
QTransform
- 返回类型::
这是一个重载函数。
将
united()
函数应用于此区域和r
。r1+r2
等价于r1.united(r2)
。另请参阅
united()
运算符|
返回一个区域,它是此区域与指定的
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+()
将该区域和
r
应用united()
函数,并将结果赋值给该区域。r1|=r2
与r1 = r1.united(r2)
等效。另请参阅
- rectCount()#
- 返回类型::
int
返回该区域由多少个矩形组成。等同于
end() - begin()
。使用由
rects
和number
指定的矩形数组设置区域。矩形必须进行最优的 Y-X 排序,并遵循以下限制:矩形不得相交。
所有具有给定顶部坐标的矩形必须有相同的高度。
两个矩形不得水平相邻(在这种情况下,应将其合并为单个更宽的矩形)。
矩形必须按升序排序,以 Y 作为主要排序键,以 X 作为次要排序键。
返回一个从该区域减去
r
的区域。图中显示将右侧的椭圆从中减去左侧椭圆的结果(
left - right
)。另请参阅
将区域
other
与该区域交换。此操作非常快速且从不失败。这是一个重载函数。
将区域沿 X 轴和 Y 轴相对于当前位置平移
point
.x() 和point
.y()。正值将区域移动到右侧和下方。平移到指定的
point
。- translate(dx, dy)
- 参数:
dx – int
dy – int
沿X轴平移(移动)
dx
和沿Y轴平移dy
的区域。这是一个重载函数。
返回一个区域的副本,该副本沿X轴相对于当前位置平移
p
.x(),沿Y轴相对于当前位置平移p
.y()。正数值将矩形向右和向下移动。另请参阅
- translated(dx, dy)
- 参数:
dx – int
dy – int
- 返回类型::
返回一个区域副本,沿X轴平移
dx
,沿Y轴平移dy
,相对于当前位置。正数值将区域向右和向下移动。另请参阅
返回一个区域,该区域是此区域与给定
rect
的并集。返回一个区域,该区域是此区域和
r
的并集。图示显示两个椭圆区域的并集。
返回一个区域,该区域是此区域和
r
的异或(XOR)。图示显示两个椭圆区域的异或。