QRegion 类为描绘器指定裁剪区域。 更多...
头: | #include <QRegion> |
CMake: |
find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
enum | RegionType { Rectangle, Ellipse } |
const_iterator | |
const_reverse_iterator |
QRegion () | |
QRegion (int x , int y , int w , int h , QRegion::RegionType t = Rectangle) | |
QRegion (const QRect & r , QRegion::RegionType t = Rectangle) | |
QRegion (const QPolygon & a , Qt::FillRule fillRule = Qt::OddEvenFill) | |
QRegion (const QBitmap & bm ) | |
QRegion (const QRegion & r ) | |
QRegion (QRegion && other ) | |
QRegion::const_iterator | begin () const |
QRect | boundingRect () const |
QRegion::const_iterator | cbegin () const |
QRegion::const_iterator | cend () const |
bool | contains (const QPoint & p ) const |
bool | contains (const QRect & r ) const |
QRegion::const_reverse_iterator | crbegin () const |
QRegion::const_reverse_iterator | crend () const |
QRegion::const_iterator | end () const |
QRegion | intersected (const QRegion & r ) const |
QRegion | intersected (const QRect & rect ) const |
bool | intersects (const QRegion & region ) const |
bool | intersects (const QRect & rect ) const |
bool | isEmpty () const |
bool | isNull () const |
QRegion::const_reverse_iterator | rbegin () const |
int | rectCount () const |
QRegion::const_reverse_iterator | rend () const |
void | setRects (const QRect * rects , int number ) |
QRegion | subtracted (const QRegion & r ) const |
void | swap (QRegion & other ) |
HRGN | toHRGN () const |
void | translate (int dx , int dy ) |
void | translate (const QPoint & point ) |
QRegion | translated (int dx , int dy ) const |
QRegion | translated (const QPoint & p ) const |
QRegion | united (const QRegion & r ) const |
QRegion | united (const QRect & rect ) const |
QRegion | xored (const QRegion & r ) const |
QVariant | operator QVariant () const |
bool | operator!= (const QRegion & other ) const |
QRegion | operator& (const QRegion & r ) const |
QRegion | operator& (const QRect & r ) const |
QRegion & | operator&= (const QRegion & r ) |
QRegion & | operator&= (const QRect & r ) |
QRegion | operator+ (const QRegion & r ) const |
QRegion | operator+ (const QRect & r ) const |
QRegion & | operator+= (const QRegion & r ) |
QRegion & | operator+= (const QRect & rect ) |
QRegion | operator- (const QRegion & r ) const |
QRegion & | operator-= (const QRegion & r ) |
QRegion & | operator= (const QRegion & r ) |
QRegion & | operator= (QRegion && other ) |
bool | operator== (const QRegion & r ) const |
QRegion | operator^ (const QRegion & r ) const |
QRegion & | operator^= (const QRegion & r ) |
QRegion | operator| (const QRegion & r ) const |
QRegion & | operator|= (const QRegion & r ) |
QRegion | fromHRGN (HRGN hrgn ) |
QDataStream & | operator<< (QDataStream & s , const QRegion & r ) |
QDataStream & | operator>> (QDataStream & s , QRegion & r ) |
QRegion 用于 QPainter::setClipRegion () 以将描绘区域限制到需要描绘的区域。另外 QWidget::repaint () 函数接受 QRegion 参数。QRegion 是重新描绘更新屏幕区域最小化数量的最佳工具。
此类不适于构造渲染形状 (尤其作为轮廓)。使用 QPainterPath 以创建路径和形状为用于 QPainter .
QRegion is an 隐式共享 类。
可以从矩形、椭圆、多边形或位图创建区域。可以创建复杂区域通过组合简单区域使用 united (), intersected (), subtracted (),或 xored () (异或)。可以移动区域使用 translate ().
可以测试区域是否 isEmpty () 或者若它 contains () QPoint or QRect . The bounding rectangle can be found with boundingRect ().
Iteration over the region (with begin (), end (), or C++11 ranged-for loops) gives a decomposition of the region into rectangles.
使用复杂区域的范例:
void MyWidget::paintEvent(QPaintEvent *) { QRegion r1(QRect(100, 100, 200, 80), // r1: elliptic region QRegion::Ellipse); QRegion r2(QRect(100, 120, 90, 30)); // r2: rectangular region QRegion r3 = r1.intersected(r2); // r3: intersection QPainter painter(this); painter.setClipRegion(r3); // ... // paint clipped graphics }
另请参阅 QPainter::setClipRegion (), QPainter::setClipRect (),和 QPainterPath .
指定要创建的区域形状。
常量 | 值 | 描述 |
---|---|---|
QRegion::Rectangle
|
0
|
区域覆盖整个矩形。 |
QRegion::Ellipse
|
1
|
区域是矩形内的椭圆。 |
An iterator over the non-overlapping rectangles that make up the region.
所有矩形的并集等于原始区域。
QRegion 不提供可变迭代器。
A reverse iterator over the non-overlapping rectangles that make up the region.
所有矩形的并集等于原始区域。
QRegion 不提供可变迭代器。
构造空区域。
另请参阅 isEmpty ().
构造矩形 (或椭圆) 区域。
若
t
is
Rectangle
,区域是填充矩形 (
x
,
y
,
w
,
h
)。若
t
is
Ellipse
,区域是填充椭圆具有中心 (
x
+
w
/ 2,
y
+
h
/ 2) 和大小 (
w
,
h
).
这是重载函数。
Create a region based on the rectangle r 采用区域类型 t .
若矩形无效,将创建 null 区域。
另请参阅 QRegion::RegionType .
构造多边形区域从点数组 a 采用填充规则指定通过 fillRule .
若 fillRule is Qt::WindingFill , the polygon region is defined using the winding algorithm; if it is Qt::OddEvenFill , the odd-even fill algorithm is used.
警告: This constructor can be used to create complex regions that will slow down painting when used.
构造区域从位图 bm .
The resulting region consists of the pixels in bitmap bm that are Qt::color1 , as if each pixel was a 1 by 1 rectangle.
This constructor may create complex regions that will slow down painting when used. Note that drawing masked pixmaps can be done much faster using QPixmap::setMask ().
构造的新区域等于区域 r .
Move-constructs a new region from region other . After the call, other 为 null。
另请参阅 isNull ().
返回 const_iterator pointing to the beginning of the range of non-overlapping rectangles that make up the region.
所有矩形的并集等于原始区域。
另请参阅 rbegin (), cbegin (),和 end ().
返回此区域的边界矩形。空区域给出的矩形为 QRect::isNull ().
如同 begin ().
如同 end ().
返回
true
若区域包含点
p
;否则返回
false
.
这是重载函数。
返回
true
若区域重叠矩形
r
;否则返回
false
.
如同 rbegin ().
如同 rend ().
返回 const_iterator pointing to one past the end of non-overlapping rectangles that make up the region.
所有矩形的并集等于原始区域。
另请参阅 rend (), cend (),和 begin ().
[static, since 6.0]
QRegion
QRegion::
fromHRGN
(
HRGN
hrgn
)
返回 QRegion 相当于给定 hrgn .
该函数在 Qt 6.0 引入。
返回区域交集此区域和 r .
图形展示 2 椭圆区域的交集。
另请参阅 subtracted (), united (),和 xored ().
返回区域交集此区域和给定 rect .
另请参阅 subtracted (), united (),和 xored ().
返回
true
若此区域相交
region
,否则返回
false
.
返回
true
若此区域相交
rect
,否则返回
false
.
返回
true
若区域为空;否则返回
false
。空区域是不包含任何点的区域。
范例:
QRegion r1(10, 10, 20, 20); r1.isEmpty(); // false QRegion r3; r3.isEmpty(); // true QRegion r2(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
返回
true
若区域为空;否则返回
false
。空区域是不包含点的区域。此函数如同
isEmpty
另请参阅 isEmpty ().
返回 const_reverse_iterator pointing to the beginning of the range of non-overlapping rectangles that make up the region.
所有矩形的并集等于原始区域。
另请参阅 begin (), crbegin (),和 rend ().
Returns the number of rectangles that this region is composed of. Same as
end() - begin()
.
返回 const_reverse_iterator pointing to one past the end of the range of non-overlapping rectangles that make up the region.
所有矩形的并集等于原始区域。
另请参阅 end (), crend (),和 rbegin ().
Sets the region using the array of rectangles specified by rects and number . The rectangles must be optimally Y-X sorted and follow these restrictions:
返回区域为 r 减去此区域。
图形展示左侧椭圆减去右侧椭圆时的结果 (
left - right
).
另请参阅 intersected (), united (),和 xored ().
交换区域 other 与此区域。此操作非常快且从不失败。
[since 6.0]
HRGN
QRegion::
toHRGN
() const
Returns a HRGN that is equivalent to the given region.
该函数在 Qt 6.0 引入。
翻译 (移动) 区域 dx 沿 X 轴和 dy 沿 Y 轴。
这是重载函数。
平移区域 point .x() 沿 X 轴和 point .y() along the y axis, relative to the current position. Positive values move the region to the right and down.
翻译为给定 point .
Returns a copy of the region that is translated dx 沿 X 轴和 dy along the y axis, relative to the current position. Positive values move the region to the right and down.
另请参阅 translate ().
这是重载函数。
返回的区域副本将翻译 p .x() 沿 X 轴和 p .y() 沿 Y 轴,相对当前位置。正值向右下移动矩形。
另请参阅 translate ().
返回区域将并集此区域和 r .
图形展示 2 椭圆区域的 union (并集)。
另请参阅 intersected (), subtracted (),和 xored ().
返回区域将并集此区域和给定 rect .
另请参阅 intersected (), subtracted (),和 xored ().
返回区域 XOR (异或) 此区域和 r .
图形展示 2 椭圆区域的 XOR (异或)。
另请参阅 intersected (), united (),和 subtracted ().
返回区域按 QVariant
返回
true
若此区域不同于
other
区域;否则返回
false
.
应用
intersected
() 函数到此区域和
r
.
r1&r2
相当于
r1.intersected(r2)
.
另请参阅 intersected ().
这是重载函数。
应用
intersected
() 函数到此区域和
r
并将结果赋值给此区域。
r1&=r2
相当于
r1
= r1.intersected(r2).
另请参阅 intersected ().
这是重载函数。
应用
united
() 函数到此区域和
r
.
r1+r2
相当于
r1.united(r2)
.
另请参阅 united () 和 operator| ().
这是重载函数。
应用
united
() 函数到此区域和
r
并将结果赋值给此区域。
r1+=r2
相当于
r1 = r1.united(r2)
.
另请参阅 intersected ().
Returns a region that is the union of this region with the specified rect .
另请参阅 united ().
应用
subtracted
() 函数到此区域和
r
.
r1-r2
相当于
r1.subtracted(r2)
.
另请参阅 subtracted ().
应用
subtracted
() 函数到此区域和
r
并将结果赋值给此区域。
r1-=r2
相当于
r1 = r1.subtracted(r2)
.
另请参阅 subtracted ().
赋值 r 到此区域并返回区域引用。
移动赋值 other 到此 QRegion 实例。
返回
true
若区域等于
r
;否则返回 false。
应用
xored
() 函数到此区域和
r
.
r1^r2
相当于
r1.xored(r2)
.
另请参阅 xored ().
应用
xored
() 函数到此区域和
r
并将结果赋值给此区域。
r1^=r2
相当于
r1 = r1.xored(r2)
.
另请参阅 xored ().
应用
united
() 函数到此区域和
r
.
r1|r2
相当于
r1.united(r2)
.
另请参阅 united () 和 operator+ ().
应用
united
() 函数到此区域和
r
并将结果赋值给此区域。
r1|=r2
相当于
r1 = r1.united(r2)
.
另请参阅 united ().
写入区域 r 到流 s 并返回流引用。
另请参阅 QDataStream 运算符格式 .
读取区域从流 s into r 并返回流引用。
另请参阅 QDataStream 运算符格式 .