當在Qt使用QPainter繪圖時,常常會遇到所需繪出圖形並非單純的長方形(Rectangle)或多邊形(polygon),可能是多種圖形的交錯合體情況,以下說明當圖形重疊時,可取得相交區域的四種情形。
General Usage:
void MyWidget::paintEvent(QPaintEvent *) { QRegion r1(QRect(100, 100, 200, 80), QRegion::Ellipse); // r1: elliptic region 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 painter.drawrect(QRect(100, 100, 200, 80)); }
- 交集-僅取出兩者相疊區域(intersected):
- QRegion QRegion::intersected ( const QRegion & r ) const
- 圖例:
- 僅取出前者未與後者重疊區域(subtracted):
- QRegion QRegion::subtracted ( const QRegion & r ) const
- 圖例:
- 聯集-合併取出兩者所有區域(united):
- QRegion QRegion::united ( const QRegion & r ) const
- 圖例:
- 取出兩者不重疊的區域(xored):
- QRegion QRegion::xored ( const QRegion & r ) const
- 圖例:
更詳細資料請參考:Qt4.6 QRegion Class Reference