QRegion Class
QRegionクラスはペインターのクリップ領域を指定します。詳細...
Header: | #include <QRegion> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
- 継承されたメンバを含む、すべてのメンバの一覧
- 非推奨メンバー
- QRegionは、ペインティングクラスと 暗黙的に共有されるクラスの一部です。
パブリック型
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)
点配列a から、fillRule で指定された塗りつぶし規則で多角形領域を構築します。
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)
regionr と等しい新しい領域を構築します。
[noexcept]
QRegion::QRegion(QRegion &&other)
Move : 領域other から新しい領域を構築。呼び出し後、other は null になります。
isNull()も参照 。
[noexcept]
QRegion::const_iterator QRegion::begin() const
領域を構成する重なり合わない矩形の範囲の先頭を指すconst_iterator を返す。
すべての矩形の和は、元の領域に等しくなります。
[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
領域を構成する、重なっていない矩形の端の1つ前を指す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 を返す。
すべての矩形の和は、元の領域に等しくなります。
[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
与えられた region と等価な HRGN を返します。
この関数は Qt 6.0 で導入されました。
void QRegion::translate(int dx, int dy)
領域dx を X 軸に沿って、dy を Y 軸に沿って平行移動する。
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
これはオーバーロードされた関数です。
p.x() をx 軸に沿って、p.y() を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
この領域とr にintersected() 関数を適用する。r1&r2
はr1.intersected(r2)
と等価。
intersected()も参照 。
QRegion QRegion::operator&(const QRect &r) const
これはオーバーロードされた関数です。
QRegion &QRegion::operator&=(const QRegion &r)
この領域とr にintersected() 関数を適用し、その結果をこの領域に代入する。r1&=r2
はr1
= r1.intersected(r2) と等価である。
intersected()も参照 。
QRegion &QRegion::operator&=(const QRect &r)
これはオーバーロードされた関数です。
QRegion QRegion::operator+(const QRegion &r) const
この領域とr にunited() 関数を適用する。r1+r2
はr1.united(r2)
と等価。
QRegion QRegion::operator+(const QRect &r) const
これはオーバーロードされた関数です。
QRegion &QRegion::operator+=(const QRect &rect)
この領域と指定されたrect の和である領域を返す。
united()も参照して ください。
QRegion &QRegion::operator+=(const QRegion &r)
この region とr にunited() 関数を適用し、その結果をこの region に代入する。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)
と同等です。
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 演算子の形式」も参照して ください。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。