QRegion Class
QRegionクラスはペインターのクリップ領域を指定します。詳細...
ヘッダー | #include <QRegion> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
- 継承メンバを含む全メンバのリスト
- 非推奨メンバー
- QRegionは、Painting Classesと Implicitly Shared Classesの一部です。
パブリック型
enum | RegionType { Rectangle, Ellipse } |
const_iterator | |
const_reverse_iterator |
パブリック関数
QRegion() | |
QRegion(const QBitmap &bm) | |
QRegion(const QPolygon &a, Qt::FillRule fillRule = Qt::OddEvenFill) | |
QRegion(int x, int y, int w, int h, QRegion::RegionType t = Rectangle) | |
QRegion(const QRect &r, QRegion::RegionType t = Rectangle) | |
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 QRect &rect) const |
QRegion | intersected(const QRegion &r) const |
bool | intersects(const QRect &rect) const |
bool | intersects(const QRegion ®ion) const |
bool | isEmpty() const |
bool | isNull() const |
QRegion::const_reverse_iterator | rbegin() const |
int | rectCount() const |
(since 6.8) QSpan<const QRect> | rects() const |
QRegion::const_reverse_iterator | rend() const |
(since 6.8) void | setRects(QSpan<const QRect> rects) |
QRegion | subtracted(const QRegion &r) const |
void | swap(QRegion &other) |
(since 6.0) 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 QRect &rect) const |
QRegion | united(const QRegion &r) 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 QRect &rect) |
QRegion & | operator+=(const QRegion &r) |
QRegion | operator-(const QRegion &r) const |
QRegion & | operator-=(const QRegion &r) |
QRegion & | operator=(QRegion &&other) |
QRegion & | operator=(const QRegion &r) |
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) |
静的パブリックメンバ
(since 6.0) QRegion | fromHRGN(HRGN hrgn) |
関連する非メンバー
QDataStream & | operator<<(QDataStream &s, const QRegion &r) |
QDataStream & | operator>>(QDataStream &s, QRegion &r) |
詳しい説明
QRegion は、QPainter::setClipRegion() と共に使用され、描画領域を描画が必要なものに限定します。QRegion パラメータを受け取るQWidget::repaint() 関数もあります。QRegionは、再描画によって更新される画面領域を最小限に抑えるための最良のツールです。
このクラスは、レンダリング用の図形、特にアウトラインの作成には適していません。QPainter で使用するパスやシェイプを作成するにはQPainterPath を使用してください。
QRegionは暗黙の共有クラスです。
リージョンの作成と使用
リージョンは矩形、楕円、多角形、ビットマップから作成できます。複雑なリージョンは、united(),intersected(),subtracted(),xored() (exclusive or) を使って単純なリージョンを組み合わせて作成することができます。リージョンはtranslate() で移動できます。
領域がisEmpty() かどうか、あるいはcontains() がQPoint かQRect かどうかを調べることができます。 境界矩形はboundingRect() で見つけることができます。
begin(),end(), またはranged-forループで)領域を繰り返し処理すると、領域が矩形に分解されます。
複合領域の使用例:
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も参照 。
メンバ型ドキュメント
enum QRegion::RegionType
作成する領域の形状を指定する。
定数 | 値 | 説明 |
---|---|---|
QRegion::Rectangle | 0 | 領域が矩形全体を覆う。 |
QRegion::Ellipse | 1 | 領域は矩形内の楕円。 |
QRegion::const_iterator
リージョンを構成する重なり合わない矩形に対するイテレータ。
すべての矩形の和は元の領域に等しい。
QRegion は変更可能なイテレータを提供しません。
QRegion::const_reverse_iterator
領域を構成する重なり合わない矩形に対する逆イテレータ。
すべての矩形の和は元の領域に等しくなります。
QRegion は変更可能なイテレータを提供しません。
メンバ関数ドキュメント
QRegion::QRegion()
空の領域を構築します。
isEmpty()も参照してください 。
QRegion::QRegion(const QBitmap &bm)
ビットマップbm から領域を構築する。
その結果、領域はビットマップbm のピクセルから構成され、Qt::color1 、あたかも各ピクセルが 1 x 1 の矩形であるかのようになります。
このコンストラクタを使用すると、描画が遅くなる複雑な領域が作成される可能性があります。マスクされた pixmap の描画は、QPixmap::setMask() を使用した方がはるかに高速であることに注意してください。
QRegion::QRegion(const QPolygon &a, Qt::FillRule fillRule = Qt::OddEvenFill)
fillRule で指定された塗りつぶしルールで、点配列a から多角形領域を構築する。
fillRule がQt::WindingFill の場合,多角形領域は winding アルゴリズムを用いて定義され,Qt::OddEvenFill の場合,奇偶塗り潰しアルゴリズムが用いられる.
警告 このコンストラクタは、複雑な領域を作成するために使用することができ、使用すると描画が遅くなります。
QRegion::QRegion(int x, int y, int w, int h, QRegion::RegionType t = Rectangle)
矩形領域または楕円領域を構築する。
t がRectangle
の場合、 領域は塗りつぶされた矩形 (x,y,w,h) となる。t がEllipse
の場合、領域は塗りつぶされた楕円で、中心は (x +w / 2,y +h / 2)、サイズは (w,h) です。
QRegion::QRegion(const QRect &r, QRegion::RegionType t = Rectangle)
これはオーバーロードされた関数である。
領域タイプt を持つ矩形r に基づいて領域を作成する。
矩形が無効な場合は null 領域が作成されます。
QRegion::RegionTypeも参照してください 。
QRegion::QRegion(const QRegion &r)
領域r に等しい新しい領域を構築する。
[noexcept]
QRegion::QRegion(QRegion &&other)
Move-リージョンother から新しいリージョンを構築する。呼び出し後、other はnullになる。
isNull()も参照のこと 。
[noexcept]
QRegion::const_iterator QRegion::begin() const
領域を構成する重なり合わない矩形の範囲の先頭を指すconst_iterator を返します。
すべての矩形の和は元の領域に等しい。
rbegin()、cbegin() およびend()も参照 。
[noexcept]
QRect QRegion::boundingRect() const
こ の領域の外接矩形を返 し ます。空の領域はQRect::isNull() の矩形を返します。
[noexcept]
QRegion::const_iterator QRegion::cbegin() const
begin() と同じ。
[noexcept]
QRegion::const_iterator QRegion::cend() const
end() と同じ。
bool QRegion::contains(const QPoint &p) const
領域が点p を含んでいればtrue
を返し、そうでなければfalse
を返す。
bool QRegion::contains(const QRect &r) const
これはオーバーロードされた関数である。
領域が矩形r に重なる場合はtrue
を返し、重ならない場合はfalse
を返します。
[noexcept]
QRegion::const_reverse_iterator QRegion::crbegin() const
rbegin() と同じ。
[noexcept]
QRegion::const_reverse_iterator QRegion::crend() const
rend() と同じ。
[noexcept]
QRegion::const_iterator QRegion::end() const
領域を構成する重なり合わない矩形の端のひとつ先を指すconst_iterator を返します。
すべての矩形の和は元の領域に等しい。
[static, since 6.0]
QRegion QRegion::fromHRGN(HRGN hrgn)
与えられたhrgn と等価なQRegion を返します。
この関数は Qt 6.0 で導入されました。
QRegion QRegion::intersected(const QRect &rect) const
この領域と与えられたrect の交点となる領域を返す。
subtracted(),united(),xored()も参照 。
QRegion QRegion::intersected(const QRegion &r) const
この領域とr の交点となる領域を返す。
図は2つの楕円領域の交点を示す。
subtracted(),united(),xored()も参照 。
bool QRegion::intersects(const QRect &rect) const
この領域がrect と交差している場合はtrue
を返し、そうでない場合はfalse
を返す。
bool QRegion::intersects(const QRegion ®ion) const
この領域がregion と交差している場合はtrue
を返し、そうでない場合はfalse
を返す。
bool QRegion::isEmpty() const
領域が空の場合は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
bool QRegion::isNull() const
領域が空の場合はtrue
を返し、そうでない場合はfalse
を返す。空の領域は、点を含まない領域である。この関数はisEmpty
isEmpty()も参照 。
[noexcept]
QRegion::const_reverse_iterator QRegion::rbegin() const
領域を構成する重なり合わない矩形の範囲の先頭を指すconst_reverse_iterator を返します。
すべての矩形の和は元の領域に等しい。
begin()、crbegin() およびrend()も参照 。
[noexcept]
int QRegion::rectCount() const
この領域が構成する矩形の数を返す。end() - begin()
と同じ。
[noexcept, since 6.8]
QSpan<const QRect> QRegion::rects() const
リージョンを構成する重なり合わない矩形のスパンを返します。このスパンは、次にこの領域に対して mutating (non-const) メソッドを呼び出すまで有効です。
すべての矩形の和は元の領域に等しい。
この関数は Qt 6.8 で導入されました。
setRects()も参照してください 。
[noexcept]
QRegion::const_reverse_iterator QRegion::rend() const
領域を構成する重なり合わない矩形の範囲の終端のひとつ先を指すconst_reverse_iterator を返します。
すべての矩形の和は元の領域に等しい。
[since 6.8]
void QRegion::setRects(QSpan<const QRect> rects)
rects で指定された矩形の配列を使用して領域を設定します。矩形は最適に Y-X ソートされ、以下の制約に従わなければならない:
- 矩形は交差してはいけません。
- 与えられた上端座標を持つすべての矩形は、同じ高さを持たなければなりません。
- 2つの矩形が水平に接することは許されない(その場合は、1つの広い矩形にまとめられるべきである)。
- 矩形は昇順にソートされなければならず、Yをメジャーソートキー、Xをマイナーソートキーとする。
注意: 歴史的な理由により、rects.size()
はINT_MAX
よりも小さくなければなりません(rectCount() を参照)。
この関数は Qt 6.8 で導入されました。
rects()も参照してください 。
QRegion QRegion::subtracted(const QRegion &r) const
この領域からr を引いた領域を返す。
図は、左の楕円から右の楕円を引いた結果を示している (left - right
)。
intersected(),united(),xored()も参照 。
[noexcept]
void QRegion::swap(QRegion &other)
この領域をother と入れ替える。この操作は非常に高速で、失敗することはない。
[since 6.0]
HRGN QRegion::toHRGN() const
与えられた領域と等価な HRGN を返します。
この関数は Qt 6.0 で導入されました。
void QRegion::translate(int dx, int dy)
領域を X 軸に沿ってdx 、Y 軸に沿ってdy 移動する。
void QRegion::translate(const QPoint &point)
これはオーバーロードされた関数です。
領域point.x()を x 軸に沿って、point.y() をy 軸に沿って、現在の位置から相対的に移動します。正の値は、領域を右と下に移動します。
与えられたpoint に変換します。
QRegion QRegion::translated(int dx, int dy) const
現在の位置を基準として、x 軸に沿ってdx に、y 軸に沿ってdy に移動した領域のコピーを返す。正の値を指定すると、領域は右と下に移動します。
translate()も参照してください 。
QRegion QRegion::translated(const QPoint &p) const
これはオーバーロードされた関数である。
現在の位置から x 軸方向にp.x()、y 軸方向にp.y()変換した矩形のコピーを返します。正の値を指定すると、矩形は右と下に移動します。
translate()も参照してください 。
QRegion QRegion::united(const QRect &rect) const
この領域と与えられたrect の和である領域を返す。
intersected(),subtracted(),xored()も参照 。
QRegion QRegion::united(const QRegion &r) const
この領域とr の和である領域を返す。
図は2つの楕円領域の和を示す。
intersected(),subtracted(),xored()も参照 。
QRegion QRegion::xored(const QRegion &r) const
この領域とr の排他的論理和(XOR)をとる領域を返す。
図は2つの楕円領域の排他的論理和を示している。
intersected(),united(),subtracted()も参照 。
QVariant QRegion::operator QVariant() const
領域をQVariant
bool QRegion::operator!=(const QRegion &other) const
この地域がother 地域と異なる場合はtrue
を返し、そうでない場合はfalse
を返す。
QRegion QRegion::operator&(const QRegion &r) const
intersected() 関数をこの領域とr に適用する。r1&r2
はr1.intersected(r2)
と等価。
intersected()も参照 。
QRegion QRegion::operator&(const QRect &r) const
これはオーバーロードされた関数である。
QRegion &QRegion::operator&=(const QRegion &r)
intersected() 関数をこの領域とr に適用し、結果をこの領域に代入する。r1&=r2
はr1
= r1.intersected(r2) と等価である。
intersected()も参照 。
QRegion &QRegion::operator&=(const QRect &r)
これはオーバーロードされた関数である。
QRegion QRegion::operator+(const QRegion &r) const
united() 関数をこの領域とr に適用する。r1+r2
はr1.united(r2)
と等価。
united() およびoperator|()も参照のこと 。
QRegion QRegion::operator+(const QRect &r) const
これはオーバーロードされた関数である。
QRegion &QRegion::operator+=(const QRect &rect)
この領域と指定されたrect との和である領域を返す。
united()も参照 。
QRegion &QRegion::operator+=(const QRegion &r)
united() 関数をこの領域とr に適用し、結果をこの領域に割り当てる。r1+=r2
はr1 = r1.united(r2)
と等価。
intersected()も参照 。
QRegion QRegion::operator-(const QRegion &r) const
subtracted() 関数をこの領域とr に適用する。r1-r2
はr1.subtracted(r2)
と等価。
subtracted()も参照 。
QRegion &QRegion::operator-=(const QRegion &r)
subtracted() 関数をこの領域とr に適用し、結果をこの領域に割り当てる。r1-=r2
はr1 = r1.subtracted(r2)
と等価。
subtracted()も参照 。
[noexcept]
QRegion &QRegion::operator=(QRegion &&other)
Move-other をこのQRegion インスタンスに割り当てる。
QRegion &QRegion::operator=(const QRegion &r)
この領域にr を割り当て、領域への参照を返す。
bool QRegion::operator==(const QRegion &r) const
領域がr に等しければtrue
を返し、そうでなければ false を返す。
QRegion QRegion::operator^(const QRegion &r) const
xored() 関数をこの領域とr に適用する。r1^r2
はr1.xored(r2)
と等価。
xored()も参照 。
QRegion &QRegion::operator^=(const QRegion &r)
xored() 関数をこの領域とr に適用し、結果をこの領域に割り当てる。r1^=r2
はr1 = r1.xored(r2)
と等価。
xored()も参照 。
QRegion QRegion::operator|(const QRegion &r) const
united() 関数をこの領域とr に適用する。r1|r2
はr1.united(r2)
と等価。
united() およびoperator+()も参照のこと 。
QRegion &QRegion::operator|=(const QRegion &r)
united() 関数をこの領域とr に適用し、結果をこの領域に割り当てる。r1|=r2
はr1 = r1.united(r2)
と等価。
united()も参照 。
関連する非会員
QDataStream &operator<<(QDataStream &s, const QRegion &r)
領域r をストリームs に書き込み、ストリームへの参照を返します。
QDataStream 演算子のフォーマットも参照してください 。
QDataStream &operator>>(QDataStream &s, QRegion &r)
ストリームs から領域をr に読み込み、ストリームへの参照を返します。
QDataStream 演算子のフォーマットも参照してください 。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.