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()(독점 또는)를 사용하여 간단한 영역을 결합하여 복잡한 영역을 만들 수 있습니다. translate ()를 사용하여 영역을 이동할 수 있습니다.
영역이 isEmpty() 또는 contains()인 경우 QPoint 또는 QRect 경계 사각형은 boundingRect()로 확인할 수 있습니다.
begin(), end() 또는 범위형 루프를 사용하여 영역을 반복하면 영역이 직사각형으로 분해됩니다.
복잡한 영역 사용 예시:
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 의 픽셀로 구성되며, 각 픽셀은 마치 1×1 직사각형인 것처럼 Qt::color1 입니다.
이 생성자를 사용하면 복잡한 영역이 생성되어 페인팅 속도가 느려질 수 있습니다. QPixmap::setMask ()를 사용하면 마스크된 픽셀맵을 훨씬 빠르게 그릴 수 있습니다.
QRegion::QRegion(const QPolygon &a, Qt::FillRule fillRule = Qt::OddEvenFill)
fillRule 에 지정된 채우기 규칙을 사용하여 점 배열 a 에서 다각형 영역을 구축합니다.
fillRule 이 Qt::WindingFill 인 경우 다각형 영역은 와인딩 알고리즘을 사용하여 정의되고 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)
이동 - 지역 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 을 반환합니다.
모든 직사각형의 합은 원래 영역과 같습니다.
rend(), cend() 및 begin()도 참조하세요 .
[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 의 교차점인 영역을 반환합니다.
그림은 두 타원형 영역의 교집합을 보여줍니다.
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
영역을 구성하는 겹치지 않는 직사각형의 스팬을 반환합니다. 스팬은 이 영역에 대한 다음 변이(논컨스트) 메서드를 호출할 때까지 유효합니다.
모든 직사각형의 합은 원래 영역과 같습니다.
이 함수는 Qt 6.8에 도입되었습니다.
setRects()도 참조하십시오 .
[noexcept]
QRegion::const_reverse_iterator QRegion::rend() const
영역을 구성하는 겹치지 않는 직사각형 범위의 끝을 지나서 하나를 가리키는 const_reverse_iterator 을 반환합니다.
모든 직사각형의 합은 원래 영역과 같습니다.
end(), crend() 및 rbegin()도 참조하세요 .
[since 6.8]
void QRegion::setRects(QSpan<const QRect> rects)
rects 에 지정된 직사각형 배열을 사용하여 영역을 설정합니다. 직사각형은 최적의 Y-X 정렬이어야 하며 다음 제한 사항을 따라야 합니다:
- 직사각형은 교차하지 않아야 합니다.
- 지정된 상단 좌표를 가진 모든 직사각형은 높이가 같아야 합니다.
- 두 개의 직사각형이 수평으로 맞닿아서는 안 됩니다(이 경우 더 넓은 하나의 직사각형으로 결합해야 합니다).
- 직사각형은 오름차순으로 정렬해야 하며, 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)
이 함수는 오버로드된 함수입니다.
현재 위치를 기준으로 x축을 따라 point.x() 영역을 변환하고 y축을 따라 point.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 의 합집합인 영역을 반환합니다.
그림은 두 타원형 영역의 결합을 보여줍니다.
intersected(), subtracted() 및 xored()도 참조하십시오 .
QRegion QRegion::xored(const QRegion &r) const
이 영역과 r 의 배타적이거나 (XOR) 인 영역을 반환합니다.
그림은 배타적이거나 두 개의 타원형 영역을 보여줍니다.
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)
이동-이 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.