Home | All Classes | Main Classes | Annotated | Grouped Classes | Functions |

# QRegion Class Reference

The QRegion class specifies a clip region for a painter. More...

    #include <QRegion>

- List of all members, including inherited members
- Compatibility members

### Public Types

- enum RegionType { Rectangle, Ellipse }

### Public Functions

- QRegion ()
- QRegion ( int x, int y, int w, int h, RegionType t = Rectangle )
- QRegion ( const QRect & r, RegionType t = Rectangle )
- QRegion ( const QPointArray & a, bool winding = false )
- QRegion ( const QRegion & r )
- QRegion ( const QBitmap & bm )
- ~QRegion ()
- QRect boundingRect () const
- bool contains ( const QPoint & p ) const
- bool contains ( const QRect & r ) const
- QRegion eor ( const QRegion & r ) const
- HRGN handle () const
- RgnHandle handle () const
- QRegion intersect ( const QRegion & r ) const
- bool isEmpty () const
- QVector<QRect> rects () const
- QRegion subtract ( const QRegion & r ) const
- void translate ( int dx, int dy )
- void translate ( const QPoint & point )
- QRegion unite ( const QRegion & r ) const
- bool operator!= ( const QRegion & other ) const
- const QRegion operator& ( const QRegion & r ) const
- QRegion & operator&= ( const QRegion & r )
- const QRegion operator+ ( const QRegion & r ) const
- QRegion & operator+= ( const QRegion & r )
- const QRegion operator- ( const QRegion & r ) const
- QRegion & operator-= ( const QRegion & r )
- QRegion & operator= ( const QRegion & r )
- bool operator== ( const QRegion & r ) const
- const QRegion operator^ ( const QRegion & r ) const
- QRegion & operator^= ( const QRegion & r )
- const QRegion operator| ( const QRegion & r ) const
- QRegion & operator|= ( const QRegion & r )

### Related Non-Members

- QDataStream & operator<< ( QDataStream & s, const QRegion & r )
- QDataStream & operator>> ( QDataStream & s, QRegion & r )

## Detailed Description

The QRegion class specifies a clip region for a painter.

QRegion is used with QPainter::setClipRegion() to limit the paint area to what needs to be painted. There is also a QWidget::repaint() function that takes a QRegion parameter. QRegion is the best tool for reducing flicker.

A region can be created from a rectangle, an ellipse, a polygon or a bitmap. Complex regions may be created by combining simple regions using unite(), intersect(), subtract(), or eor() (exclusive or). You can move a region using translate().

You can test whether a region isNull(), isEmpty() or if it contains() a QPoint or QRect. The bounding rectangle can be found with boundingRect().

The function rects() gives a decomposition of the region into rectangles.

Example of using complex regions:

        void MyWidget::paintEvent(QPaintEvent *)
        {
            QPainter p;                       // our painter
            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.intersect(r2);    // r3 = intersection
            p.begin(this);                    // start painting widget
            p.setClipRegion(r3);              // set clip region
            ...                               // paint clipped graphics
            p.end();                          // painting done
        }

QRegion is an implicitly shared class.

Warning: Due to window system limitations, the whole coordinate space for a region is limited to the points between -32767 and 32767 on Windows 95/98/ME.

See also QPainter::setClipRegion() and QPainter::setClipRect().

## Member Type Documentation

### enum QRegion::RegionType

Specifies the shape of the region to be created.

`QRegion::Rectangle` | the region covers the entire rectangle.
`QRegion::Ellipse` | the region is an ellipse inside the rectangle.

## Member Function Documentation

### QRegion::QRegion ()

Creates a new empty region.

See also isEmpty().

### QRegion::QRegion ( int x, int y, int w, int h, RegionType t = Rectangle )

Constructs a rectangular or elliptic region.

If t is `Rectangle`, the region is the filled rectangle (x, y, w, h). If t is `Ellipse`, the region is the filled ellipse with center at (x + w / 2, y + h / 2) and size (w ,h).

### QRegion::QRegion ( const QRect & r, RegionType t = Rectangle )

Creates a new region. If t is `Rectangle` the new region is a rectangle occupying the area of the rectangle r; if t is `Ellipse` the new region is the largest ellipse that fills the area occupied by the rectangle r.

### QRegion::QRegion ( const QPointArray & a, bool winding = false )

Creates a new region occupying the area of the polygon defined by the points in the point array a. The shape of the polygon may differ depending on the value of winding which if true causes the shape to be filled using the Winding algorithm, and if false casues it to be filled using the Odd-Even algorithm.

### QRegion::QRegion ( const QRegion & r )

Creates a new region that is a copy of the region r.

This is fast because QRegion is implicitly shared.

### QRegion::QRegion ( const QBitmap & bm )

Creates a new region based on the bitmap bm.

### QRegion::~QRegion ()

Destroys this region.

### QRect QRegion::boundingRect () const

Returns the smallest bounding rectangle that contains this region.

### bool QRegion::contains ( const QPoint & p ) const

Returns true if this region contains the point p; otherwise returns false.

### bool QRegion::contains ( const QRect & r ) const

This is an overloaded member function, provided for convenience. It behaves essentially like the above function.

Returns true if this region wholly contains the region r; otherwise returns false.

### QRegion QRegion::eor ( const QRegion & r ) const

Returns a region that is the result of exclusive-OR-ing this region with the region r.

### HRGN QRegion::handle () const

Returns the region's handle.

### RgnHandle QRegion::handle () const

This is an overloaded member function, provided for convenience. It behaves essentially like the above function.

### QRegion QRegion::intersect ( const QRegion & r ) const

Returns a region that is the result of intersecting this region with the region r.

### bool QRegion::isEmpty () const

Returns true if this region is empty; otherwise returns false.

### QVector<QRect> QRegion::rects () const

Returns a (possibly empty) list of the rectangles that constitute this region.

### QRegion QRegion::subtract ( const QRegion & r ) const

Returns a region that is the result of subtracting the region r from this region.

### void QRegion::translate ( int dx, int dy )

Translates the region by dx on the x axis and by dy on the y axis.

### void QRegion::translate ( const QPoint & point )

This is an overloaded member function, provided for convenience. It behaves essentially like the above function.

Translates to the given point.

### QRegion QRegion::unite ( const QRegion & r ) const

Returns a region that is the result of performing a union of this region with the region r.

### bool QRegion::operator!= ( const QRegion & other ) const

Returns true if this region is different from the other region; otherwise returns false.

### const QRegion QRegion::operator& ( const QRegion & r ) const

Applies the intersect() function to this region and r. `r1&r2` is equivalent to `r1.intersect(r2)`

See also intersect().

### QRegion & QRegion::operator&= ( const QRegion & r )

Applies the intersect() function to this region and r and assigns the result to this region. `r1&=r2` is equivalent to `r1=r1.intersect(r2)`

See also intersect().

### const QRegion QRegion::operator+ ( const QRegion & r ) const

Applies the unite() function to this region and r. `r1+r2` is equivalent to `r1.unite(r2)`

See also unite() and operator|().

### QRegion & QRegion::operator+= ( const QRegion & r )

Applies the unite() function to this region and r and assigns the result to this region. `r1+=r2` is equivalent to `r1=r1.unite(r2)`

See also intersect().

### const QRegion QRegion::operator- ( const QRegion & r ) const

Applies the subtract() function to this region and r. `r1-r2` is equivalent to `r1.subtract(r2)`

See also subtract().

### QRegion & QRegion::operator-= ( const QRegion & r )

Applies the subtract() function to this region and r and assigns the result to this region. `r1-=r2` is equivalent to `r1=r1.subtract(r2)`

See also subtract().

### QRegion & QRegion::operator= ( const QRegion & r )

Assigns region r to this region and returns a reference to this region.

### bool QRegion::operator== ( const QRegion & r ) const

Returns true if this region is the same as the region r; otherwise returns false.

### const QRegion QRegion::operator^ ( const QRegion & r ) const

Applies the eor() function to this region and r. `r1^r2` is equivalent to `r1.eor(r2)`

See also eor().

### QRegion & QRegion::operator^= ( const QRegion & r )

Applies the eor() function to this region and r and assigns the result to this region. `r1^=r2` is equivalent to `r1=r1.eor(r2)`

See also eor().

### const QRegion QRegion::operator| ( const QRegion & r ) const

Applies the unite() function to this region and r. `r1|r2` is equivalent to `r1.unite(r2)`

See also unite() and operator+().

### QRegion & QRegion::operator|= ( const QRegion & r )

Applies the unite() function to this region and r and assigns the result to this region. `r1|=r2` is equivalent to `r1=r1.unite(r2)`

See also unite().

## Related Non-Members

### QDataStream & operator<< ( QDataStream & s, const QRegion & r )

This is an overloaded member function, provided for convenience. It behaves essentially like the above function.

Writes the region r to the stream s and returns a reference to the stream.

See also Format of the QDataStream operators.

### QDataStream & operator>> ( QDataStream & s, QRegion & r )

This is an overloaded member function, provided for convenience. It behaves essentially like the above function.

Reads a region from the stream s into r and returns a reference to the stream.

See also Format of the QDataStream operators.