QPainterPath Class
QPainterPath クラスは、グラフィカルな図形を構築して再利用できるように、ペイント操作用のコンテナを提供します。詳細...
Header: | #include <QPainterPath> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
- 継承メンバを含む全メンバ一覧
- QPainterPath は、ペインティングクラスおよび暗黙的に共有されるクラスの一部です。
パブリック型
class | Element |
enum | ElementType { MoveToElement, LineToElement, CurveToElement, CurveToDataElement } |
パブリック関数
QPainterPath() | |
QPainterPath(const QPointF &startPoint) | |
QPainterPath(const QPainterPath &path) | |
~QPainterPath() | |
void | addEllipse(const QRectF &boundingRectangle) |
void | addEllipse(const QPointF ¢er, qreal rx, qreal ry) |
void | addEllipse(qreal x, qreal y, qreal width, qreal height) |
void | addPath(const QPainterPath &path) |
void | addPolygon(const QPolygonF &polygon) |
void | addRect(const QRectF &rectangle) |
void | addRect(qreal x, qreal y, qreal width, qreal height) |
void | addRegion(const QRegion ®ion) |
void | addRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize) |
void | addRoundedRect(qreal x, qreal y, qreal w, qreal h, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize) |
void | addText(const QPointF &point, const QFont &font, const QString &text) |
void | addText(qreal x, qreal y, const QFont &font, const QString &text) |
qreal | angleAtPercent(qreal t) const |
void | arcMoveTo(const QRectF &rectangle, qreal angle) |
void | arcMoveTo(qreal x, qreal y, qreal width, qreal height, qreal angle) |
void | arcTo(const QRectF &rectangle, qreal startAngle, qreal sweepLength) |
void | arcTo(qreal x, qreal y, qreal width, qreal height, qreal startAngle, qreal sweepLength) |
QRectF | boundingRect() const |
int | capacity() const |
void | clear() |
void | closeSubpath() |
void | connectPath(const QPainterPath &path) |
bool | contains(const QPainterPath &p) const |
bool | contains(const QPointF &point) const |
bool | contains(const QRectF &rectangle) const |
QRectF | controlPointRect() const |
void | cubicTo(const QPointF &c1, const QPointF &c2, const QPointF &endPoint) |
void | cubicTo(qreal c1X, qreal c1Y, qreal c2X, qreal c2Y, qreal endPointX, qreal endPointY) |
QPointF | currentPosition() const |
QPainterPath::Element | elementAt(int index) const |
int | elementCount() const |
Qt::FillRule | fillRule() const |
QPainterPath | intersected(const QPainterPath &p) const |
bool | intersects(const QPainterPath &p) const |
bool | intersects(const QRectF &rectangle) const |
bool | isEmpty() const |
qreal | length() const |
void | lineTo(const QPointF &endPoint) |
void | lineTo(qreal x, qreal y) |
void | moveTo(const QPointF &point) |
void | moveTo(qreal x, qreal y) |
qreal | percentAtLength(qreal len) const |
QPointF | pointAtPercent(qreal t) const |
void | quadTo(const QPointF &c, const QPointF &endPoint) |
void | quadTo(qreal cx, qreal cy, qreal endPointX, qreal endPointY) |
void | reserve(int size) |
void | setElementPositionAt(int index, qreal x, qreal y) |
void | setFillRule(Qt::FillRule fillRule) |
QPainterPath | simplified() const |
qreal | slopeAtPercent(qreal t) const |
QPainterPath | subtracted(const QPainterPath &p) const |
void | swap(QPainterPath &other) |
QPolygonF | toFillPolygon(const QTransform &matrix = QTransform()) const |
QList<QPolygonF> | toFillPolygons(const QTransform &matrix = QTransform()) const |
QPainterPath | toReversed() const |
QList<QPolygonF> | toSubpathPolygons(const QTransform &matrix = QTransform()) const |
void | translate(qreal dx, qreal dy) |
void | translate(const QPointF &offset) |
QPainterPath | translated(qreal dx, qreal dy) const |
QPainterPath | translated(const QPointF &offset) const |
QPainterPath | united(const QPainterPath &p) const |
bool | operator!=(const QPainterPath &path) const |
QPainterPath | operator&(const QPainterPath &other) const |
QPainterPath & | operator&=(const QPainterPath &other) |
QPainterPath | operator+(const QPainterPath &other) const |
QPainterPath & | operator+=(const QPainterPath &other) |
QPainterPath | operator-(const QPainterPath &other) const |
QPainterPath & | operator-=(const QPainterPath &other) |
QPainterPath & | operator=(QPainterPath &&other) |
QPainterPath & | operator=(const QPainterPath &path) |
bool | operator==(const QPainterPath &path) const |
QPainterPath | operator|(const QPainterPath &other) const |
QPainterPath & | operator|=(const QPainterPath &other) |
関連する非メンバー
QDataStream & | operator<<(QDataStream &stream, const QPainterPath &path) |
QDataStream & | operator>>(QDataStream &stream, QPainterPath &path) |
詳細説明
ペインタパスは、矩形、楕円、直線、曲線などのグラフィカルなビルディングブロックで構成されるオブジェクトです。ビルディングブロックは、矩形や楕円などの閉じたサブパスで結合することができます。閉じたパスは始点と終点が一致している。また、直線や曲線のように、閉じていないサブパスとして独立して存在することもできます。
QPainterPath オブジェクトは、塗りつぶし、アウトライン化、クリッピングに使うことができます。与えられたペインタパスに対して塗りつぶし可能なアウトラインを生成するには、QPainterPathStroker クラスを使います。通常の描画操作に対するペインタパスの主な利点は、複雑な図形を一度だけ作成すればよく、その後はQPainter::drawPath() 関数を呼び出すだけで何度でも描画できることです。
QPainterPath は、 パ ス と その要素に関す る 情報を取得す る ために利用で き る 関数群を提供 し てい ます。さらに、toReversed ()関数を使用して、要素の順序を逆にすることも可能です。また、このペインタパスオブジェクトをポリゴン表現に変換する関数もいくつかあります。
QPainterPath の構成
QPainterPathオブジェクトは、空のパス、指定された始点、または別のQPainterPathオブジェクトのコピーとして構築することができます。一旦作成されると、lineTo(),arcTo(),cubicTo(),quadTo() 関数を使用して、線と曲線をパスに追加することができます。線と曲線はcurrentPosition() から引数として渡された位置まで伸びます。
QPainterPathオブジェクトのcurrentPosition ()は、常に最後に追加されたサブパスの終了位置(または最初の開始位置)です。コンポーネントを追加せずにcurrentPosition() を移動するには、moveTo() 関数を使用します。moveTo() 関数は、暗黙的に新しいサブパスを開始し、前のサブパスを閉じます。新しいサブパスを開始するもう1つの方法は、closeSubpath ()関数を呼び出すことです。この関数は、currentPosition ()からパスの開始位置に戻って行を追加することによって、現在のパスを閉じます。新しいパスは、その初期currentPosition() として (0, 0) を持つことに注意してください。
addEllipse(),addPath(),addRect(),addRegion(),addText() です。addPolygon()関数は閉じていないサブパスを追加します。実際には、これらの関数はすべて、moveTo ()、lineTo ()、cubicTo ()操作のコレクションです。
さらに、connectPath ()関数を使えば、現在のパスにパスを追加することができる。ただしこの関数は、現在のパスの最後の要素と、与えられたパスの最初の要素とを、行を追加することで接続することに注意してください。
以下は、QPainterPath オブジェクトの使い方を示すコード・スニペットです:
QPainterPath path; path.addRect(20, 20, 60, 60); path.moveTo(0, 0); path.cubicTo(99, 0, 50, 50, 99, 99); path.cubicTo(0, 99, 50, 50, 0, 0); QPainter painter(this); painter.fillRect(0, 0, 100, 100, Qt::white); painter.setPen(QPen(QColor(79, 106, 25), 1, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin)); painter.setBrush(QColor(122, 163, 39)); painter.drawPath(path); |
ペインターパスは、構築されたとき、最初は空です。まず、閉じたサブパスである矩形を追加します。次に、2つのベジェ曲線を追加します。この2つのベジェ曲線は、それぞれは閉じていなくても、一緒になって閉じたサブパスを形成します。最後にパス全体を描画します。パスは、デフォルトの塗りつぶしルールであるQt::OddEvenFill を使って塗りつぶされます。Qt はパスを塗りつぶすための 2 つのメソッドを提供しています:
ルールの定義についてはQt::FillRule のドキュメントを参照してください。ペインタパスに現在設定されている塗りつぶしルールは、fillRule() 関数で取得でき、setFillRule() 関数で変更できます。
QPainterPath 情報
QPainterPath クラスは、パスとその要素に関する情報を返す関数のコレクションを提供します。
currentPosition() 関数は、最後に追加されたサブパスの終了点(または最初の開始点)を返します。elementAt ()関数は、様々なサブパス要素を取得するために使用することができ、要素の数は、elementCount ()関数を使用して取得することができ、isEmpty ()関数は、このQPainterPathオブジェクトが全く要素を含んでいるかどうかを示します。
controlPointRect() 関数は、このパス内のすべての点と制御点を含む矩形を返します。この関数は、浮動小数点精度でこのペインタパスの外接矩形を返す正確なboundingRect() よりも計算がかなり高速です。
最後に、QPainterPath は、与えられた点または矩形がパスの内部にあるかどうかを判定するために使用できるcontains() 関数と、与えられた矩形の内部にある点のいずれかがこのパスの内部にもあるかどうかを判定するintersects() 関数を提供します。
QPainterPath 変換
互換性の理由から、ペインタパスの表現を単純化する必要があるかもしれません:QPainterPath は、ペインタパスを多角形に変換するtoFillPolygon(),toFillPolygons(),toSubpathPolygons() 関数を提供します。QPainterPath には、ペインタパスを多角形に変換する関数toFillPolygon(), (), () があります。
toFillPolygons() とtoSubpathPolygons() 関数が提供されているのは、描画される点の総数は同じでも、1つの大きな多角形を描画するよりも、複数の小さな多角形を描画する方が通常は高速だからです。両者の違いは、返す多角形の数です:toSubpathPolygons() は、交差するサブパス(すなわち、重なり合う外接矩形)に関係なく、各サブパスに対して1つのポリゴンを作成しますが、toFillPolygons() 関数は、重なり合うサブパスに対して1つのポリゴンのみを作成します。
toFillPolygon() とtoFillPolygons() 関数は、まずすべてのサブパスをポリゴンに変換し、次に巻き戻し技法を使用して、重複するサブパスが正しい塗りつぶしルールで塗りつぶされるようにします。巻き戻しは多角形に追加の線を挿入するので、塗りつぶし多角形の輪郭はパスの輪郭と一致しないことに注意してください。
サンプル
Qt では、Qt の example ディレクトリにあるPainter Paths ExampleとVector Deformation Exampleを提供しています。
ペインタパスの例では、ペインタパスを使用してレンダリング用の複雑な形状を作成する方法を示しており、ユーザは塗りつぶしや描画を試すことができます。Vector Deformation Exampleでは、QPainterPath を使ってテキストを描画する方法を示しています。
QPainterPathStroker,QPainter,QRegion, およびPainter Paths Exampleも参照してください 。
メンバ型ドキュメント
enum QPainterPath::ElementType
この列挙型は、サブパス内の頂点を接続するために使用される要素のタイプを記述します。
addEllipse(),addPath(),addPolygon(),addRect(),addRegion(),addText() 便利関数を用いて閉じたサブパスとして追加された要素は、実際にはmoveTo(),lineTo(),cubicTo() 関数を用いて別々の要素の集まりとしてパスに追加されることに注意してください。
定数 | 値 | 説明 |
---|---|---|
QPainterPath::MoveToElement | 0 | 新しいサブパス。moveTo() も参照。 |
QPainterPath::LineToElement | 1 | 行。lineTo() も参照。 |
QPainterPath::CurveToElement | 2 | 曲線。cubicTo() およびquadTo() も参照。 |
QPainterPath::CurveToDataElement | 3 | CurveToElement 要素で曲線を記述するために必要な追加データ。 |
elementAt() およびelementCount() も参照 。
メンバ関数ドキュメント
[noexcept]
QPainterPath::QPainterPath()
空の QPainterPath オブジェクトを構築します。
[explicit]
QPainterPath::QPainterPath(const QPointF &startPoint)
与えられたstartPoint を現在位置とする QPainterPath オブジェクトを生成します。
QPainterPath::QPainterPath(const QPainterPath &path)
与えられたpath のコピーである QPainterPath オブジェクトを作成します。
operator=()も参照してください 。
[noexcept]
QPainterPath::~QPainterPath()
このQPainterPath オブジェクトを破棄します。
void QPainterPath::addEllipse(const QRectF &boundingRectangle)
指定されたboundingRectangle 内に楕円を作成し、それを閉じたサブパスとしてペインタパスに追加します。
楕円は時計回りの曲線で構成され、 0 度 (3 時の位置) を始点と終点とします。
QLinearGradient myGradient; QPen myPen; QRectF boundingRectangle; QPainterPath myPath; myPath.addEllipse(boundingRectangle); QPainter painter(this); painter.setBrush(myGradient); painter.setPen(myPen); painter.drawPath(myPath); |
arcTo(),QPainter::drawEllipse(),Composing a QPainterPathも参照してください 。
void QPainterPath::addEllipse(const QPointF ¢er, qreal rx, qreal ry)
これはオーバーロードされた関数です。
半径rx とry を持つ、center に配置された楕円を作成し、それを閉じたサブパスとしてペインタパスに追加します。
void QPainterPath::addEllipse(qreal x, qreal y, qreal width, qreal height)
これはオーバーロードされた関数です。
(x,y),width,height の左上隅で定義される外接矩形内に楕円を作成し、それを閉じたサブパスとしてペインタパスに追加します。
void QPainterPath::addPath(const QPainterPath &path)
このパスに、 与えられたpath を閉 じ たサブパス と し て追加 し ます。
connectPath() およびComposing a QPainterPathも参照 。
void QPainterPath::addPolygon(const QPolygonF &polygon)
与えられたpolygon を、(閉じていない)サブパスとしてパスに追加します。
多角形が追加された後の現在の位置は、polygon の最後の点であることに注意してください。最初の点に戻って線を引くには、closeSubpath() 関数を使います。
QLinearGradient myGradient; QPen myPen; QPolygonF myPolygon; QPainterPath myPath; myPath.addPolygon(myPolygon); QPainter painter(this); painter.setBrush(myGradient); painter.setPen(myPen); painter.drawPath(myPath); |
lineTo() およびComposing a QPainterPathも参照してください 。
void QPainterPath::addRect(const QRectF &rectangle)
与えられたrectangle を、閉じたサブパスとしてこのパスに追加します。
rectangle は、 時計回 り の線の集合 と し て追加 さ れます。rectangle が追加 さ れた後の、 塗 り 手パ ス の現在位置は、 矩形の左上隅にな り ます。
QLinearGradient myGradient; QPen myPen; QRectF myRectangle; QPainterPath myPath; myPath.addRect(myRectangle); QPainter painter(this); painter.setBrush(myGradient); painter.setPen(myPen); painter.drawPath(myPath); |
addRegion(),lineTo(),Composing a QPainterPathも参照 。
void QPainterPath::addRect(qreal x, qreal y, qreal width, qreal height)
これはオーバーロードされた関数です。
与えられたwidth とheight を閉じたサブパスとして、位置 (x,y) に矩形を追加します。
void QPainterPath::addRegion(const QRegion ®ion)
与えられたregion をパスに追加し、その領域内の各矩形を個別の閉じたサブパスとして追加します。
addRect() およびComposing a QPainterPathも参照 。
void QPainterPath::addRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)
与えられた矩形rect を、角を丸めた形でパスに追加します。
引数xRadius とyRadius は,丸められた矩形の角を定義する楕円の半径を指定します。mode がQt::RelativeSize のとき,xRadius とyRadius は,それぞれ矩形の幅と高さの半分のパーセンテージで指定され, 0.0 から 100.0 の範囲でなければなりません。
addRect()も参照 。
void QPainterPath::addRoundedRect(qreal x, qreal y, qreal w, qreal h, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)
これはオーバーロードされた関数です。
与えられた矩形x,y,w,h を角に丸みをつけてパスに追加します。
void QPainterPath::addText(const QPointF &point, const QFont &font, const QString &text)
与えられたfont から作成された閉じたサブパスの集合として、与えられたtext をこのパスに追加します。サブパスは、 テキス ト のベース ラ イ ンの左端が、 指定 し たpoint に位置する よ う に配置 さ れます。
フ ォ ン ト に よ っ ては、 重な り 合 う サブパスが生成 さ れ る こ と があ り 、 正 し い レ ン ダ リ ン グのためにはQt::WindingFill
の塗りつぶしルールが必要にな り ます。
QLinearGradient myGradient; QPen myPen; QFont myFont; QPointF baseline(x, y); QPainterPath myPath; myPath.addText(baseline, myFont, tr("Qt")); QPainter painter(this); painter.setBrush(myGradient); painter.setPen(myPen); painter.drawPath(myPath); |
QPainter::drawText()、Composing a QPainterPath 、setFillRule()も参照 。
void QPainterPath::addText(qreal x, qreal y, const QFont &font, const QString &text)
これはオーバーロードされた関数です。
与えられたfont から作成された閉じたサブパスの集合として、与えられたtext をこのパスに追加します。サブパスは、 テキス ト のベース ラ イ ンの左端が、 (x,y) で指定 し た点に位置す る よ う に配置 さ れます。
qreal QPainterPath::angleAtPercent(qreal t) const
パーセ ン ト 値t におけるパスの接線の角度を返 し ます。引数t は 0 か ら 1 の間でなければな り ません。
角度の正の値は反時計回りを意味し、負の値は時計回りを意味する。0度は3時の位置である。
他のパーセント法と同様に、パスに曲線が存在する場合、パーセント測定は長さに関して線形ではないことに注意。曲線が存在する場合、パーセンテージの引数はベジェ方程式の t パラメータにマップされます。
void QPainterPath::arcMoveTo(const QRectF &rectangle, qreal angle)
angle で与えられたrectangle を占める円弧上にある移動先を作成します。
角度は度単位で指定します。時計回りの円弧は負の角度で指定できます。
moveTo() およびarcTo()も参照してください 。
void QPainterPath::arcMoveTo(qreal x, qreal y, qreal width, qreal height, qreal angle)
これはオーバーロードされた関数です。
angle のQRectF(x,y,width,height) を占める円弧上にある移動先を作成します。
void QPainterPath::arcTo(const QRectF &rectangle, qreal startAngle, qreal sweepLength)
指定されたstartAngle を始点とし、反時計回りにsweepLength 度延びる、指定されたrectangle を占める円弧を作成する。
角度は度単位で指定する。反時計回りの円弧は負の角度を用いて指定することができる。
この関数は、円弧の始点と現在位置がまだ接続されていなければ、接続することに注意。円弧が追加された後、現在位置は円弧の最後の点となる。最初の点に戻って線を引くには、closeSubpath ()関数を使用する。
QPainterPath myPath; myPath.moveTo(center); myPath.arcTo(boundingRect, startAngle, sweepLength); QPainter painter(this); painter.setBrush(myGradient); painter.setPen(myPen); painter.drawPath(myPath); |
arcMoveTo(),addEllipse(),QPainter::drawArc(),QPainter::drawPie(),Composing a QPainterPathも参照 。
void QPainterPath::arcTo(qreal x, qreal y, qreal width, qreal height, qreal startAngle, qreal sweepLength)
これはオーバーロードされた関数です。
矩形QRectF(x,y,width,height) を占める円弧を作成し、指定されたstartAngle を始点として、反時計回りにsweepLength 度伸びる。
QRectF QPainterPath::boundingRect() const
このペインタパスの外接矩形を、浮動小数点精度の矩形として返します。
controlPointRect()も参照してください 。
int QPainterPath::capacity() const
QPainterPath によって割り当てられた要素の数を返します。
void QPainterPath::clear()
格納 さ れてい る パス要素を ク リ ア し ます。
これにより、パスは以前のメモリ割り当てを再利用できるようになります。
reserve() およびcapacity()も参照して ください。
void QPainterPath::closeSubpath()
サブパスの先頭に線を引いて現在のサブパスを閉じ、自動的に新しいパスを開始します。新しいパスの現在点は (0, 0) である。
サブパスに要素がない場合、この関数は何もしない。
moveTo() およびComposing a QPainterPathも参照 。
void QPainterPath::connectPath(const QPainterPath &path)
このパスの最後の要素から、与えられたパスの最初の要素へ線を追加することによって、与えられたpath をこのパスに接続します。
addPath() およびComposing a QPainterPathも参照 。
bool QPainterPath::contains(const QPainterPath &p) const
与えられたパスp がカ レ ン ト パ ス内に含まれてい る と き はtrue
を返 し ます。カ レ ン ト パ ス とp のいずれかの辺が交差 し てい る と き はfalse
を返 し ます。
パ スに対する設定操作は、 パ ス を領域 と し て扱い ます。閉 じ ていないパ ス は暗黙的に閉 じ た も の と し て扱われます。
intersects()も参照 。
bool QPainterPath::contains(const QPointF &point) const
与えられたpoint がパスの中にある場合はtrue
を返し、そうでない場合はfalse
を返す。
intersects()も参照 。
bool QPainterPath::contains(const QRectF &rectangle) const
与えられたrectangle がパスの内部にある場合はtrue
を返し、そうでない場合はfalse
を返します。
QRectF QPainterPath::controlPointRect() const
このパス内のすべての点と制御点を含む矩形を返します。
この関数は,正確にはboundingRect() よりもかなり高速に計算でき,返される矩形は常に,boundingRect() によって返される矩形のスーパーセットです.
boundingRect()も参照してください 。
void QPainterPath::cubicTo(const QPointF &c1, const QPointF &c2, const QPointF &endPoint)
c1 およびc2 で指定された制御点を用いて,現在の位置と与えられたendPoint との間に三次ベジェ曲線を追加します.
曲線が追加された後、現在位置は曲線の終点になるように更新される。
QLinearGradient myGradient; QPen myPen; QPainterPath myPath; myPath.cubicTo(c1, c2, endPoint); QPainter painter(this); painter.setBrush(myGradient); painter.setPen(myPen); painter.drawPath(myPath); |
quadTo() およびComposing a QPainterPathも参照のこと 。
void QPainterPath::cubicTo(qreal c1X, qreal c1Y, qreal c2X, qreal c2Y, qreal endPointX, qreal endPointY)
これはオーバーロードされた関数です。
(c1X,c1Y) と (c2X,c2Y) で指定される制御点を持つ 3 次ベジェ曲線を、現在位置と終点 (endPointX,endPointY) との間に追加します。
QPointF QPainterPath::currentPosition() const
パスの現在位置を返します。
QPainterPath::Element QPainterPath::elementAt(int index) const
画家パス内の、 与えられたindex にある要素を返 し ます。
ElementType,elementCount(),isEmpty()も参照 。
int QPainterPath::elementCount() const
ペインタパス内のパス要素の数を返します。
ElementType 、elementAt()、isEmpty()も参照 。
Qt::FillRule QPainterPath::fillRule() const
ペインタパスの、現在設定されている塗りつぶし規則を返します。
setFillRule()も参照 。
QPainterPath QPainterPath::intersected(const QPainterPath &p) const
こ のパ ス の塗 り 領域 とp の塗 り 領域の交点 と な る パ ス を返 し ます。ベジ エ曲線は、 ベジ エ曲線の交点を描 く と 数値的に不安定にな る ため、 線分へ平坦化 さ れる こ と があ り ます。
bool QPainterPath::intersects(const QPainterPath &p) const
現在のパスが、 与えられたパスp と 任意の点で交差 し てい る と き は、true
を返 し ます。ま た、 カ レ ン ト パ ス がp のいずれかの部分を含むか、 またはその部分に含まれる場合にはtrue
を返します。
パスに対する集合操作は、 パスを領域 と し て扱います。閉じていないパスは、暗黙的に閉じたものとして扱われます。
contains()も参照 。
bool QPainterPath::intersects(const QRectF &rectangle) const
与えられたrectangle のいずれかの点がパスと交差している場合はtrue
を返し、そうでない場合はfalse
を返します。
矩形を構成する線のいずれかがパスの一部を横切る場合、または矩形の一部がパスで囲まれた領域と重なる場合、交差が存在します。こ の関数は、 カ レ ン トfillRule を尊重 し て、 パ ス の内側 と 見な さ れ る も のを決定 し ます。
contains ()も参照してください 。
bool QPainterPath::isEmpty() const
このパスに要素がない場合、または要素がMoveToElement のみである場合はtrue
を返し、そうでない場合はfalse
を返します。
elementCount()も参照 。
qreal QPainterPath::length() const
現在のパスの長さを返します。
void QPainterPath::lineTo(const QPointF &endPoint)
現在の位置から、与えられたendPoint までの直線を追加します。直線が引かれた後、現在位置は直線の終点に更新されます。
addPolygon()、addRect()、Composing a QPainterPathも参照 。
void QPainterPath::lineTo(qreal x, qreal y)
これはオーバーロードされた関数です。
現在位置から点 (x,y) までの線を描画します。
void QPainterPath::moveTo(const QPointF &point)
現在の点を、与えられたpoint に移動します。これは、暗黙のうちに、新しいサブパスを開始し、前のサブパスを閉じます。
closeSubpath() およびComposing a QPainterPathも参照 。
void QPainterPath::moveTo(qreal x, qreal y)
これはオーバーロードされた関数である。
現在の位置を (x,y) に移動し、新しいサブパスを開始し、暗黙のうちに前のパスを閉じます。
qreal QPainterPath::percentAtLength(qreal len) const
指定された長さにおけるパス全体のパーセンテージlen を返します。
他のパーセ ン ト 値 メ ソ ッ ド と 同様に、 パ ス 内に曲線が存在する と きは、 パーセ ン ト 値は長 さ に対 し て線形ではな く な る こ と に注意 し て く だ さ い。曲線が存在する場合、 percentage 引数は Bezier 方程式の t パラメータにマップされます。
QPointF QPainterPath::pointAtPercent(qreal t) const
現在のパスのパーセンテージt における点を返す。引数t は 0 から 1 の間でなければならない。
他のパーセンテージメソッドと同様に、パスに曲線が存在する場合、パーセンテージ測定は長さに対して線形ではないことに注意してください。曲線が存在する場合、パーセンテージの引数はベジェ方程式の t パラメータにマップされます。
void QPainterPath::quadTo(const QPointF &c, const QPointF &endPoint)
現在の位置と与えられたendPoint との間に、c で指定された制御点を持つ 2 次ベジェ曲線を追加します。
曲線が追加された後、現在点は曲線の終点に更新される。
cubicTo() およびComposing a QPainterPathも参照のこと 。
void QPainterPath::quadTo(qreal cx, qreal cy, qreal endPointX, qreal endPointY)
これはオーバーロードされた関数です。
(cx,cy) で指定される制御点を持つ 2 次ベジェ曲線を、現在点と終点 (endPointX,endPointY) との間に追加します。
void QPainterPath::reserve(int size)
QPainterPath の内部メモリに、指定された量の要素を確保します。
少なくともsize 要素分のメモリを確保しようとする。
clear()、capacity()、QList::reserve()も参照 。
void QPainterPath::setElementPositionAt(int index, qreal x, qreal y)
インデックスindex の要素の x 座標と y 座標をx とy に設定します。
void QPainterPath::setFillRule(Qt::FillRule fillRule)
ペ イ ン タ パスの塗りつぶし規則を、 与え ら れたfillRule に設定 し ます。Qt は、 パスを塗りつぶすための 2 つの メ ソ ッ ド を提供 し てい ます:
Qt::OddEvenFill (デフォルト) | Qt::WindingFill |
---|---|
fillRule()も参照してください 。
QPainterPath QPainterPath::simplified() const
このパスの簡略版を返 し ます。こ れは、 交差す る すべてのサブパ ス を連結 し 、 交差す る 辺を含まないパ ス を返す こ と を意味 し ます。連続する平行線もマージされます。単純化 さ れたパ ス は、 つねにデフ ォ ル ト の塗 り 規則Qt::OddEvenFill を用います。ベジェ曲線は、ベジェ曲線の交差を行う際に数値的に不安定なため、線分に平坦化されることがあります。
qreal QPainterPath::slopeAtPercent(qreal t) const
パスの傾きをパーセ ン ト 値t で返 し ます。引数t は 0 から 1 の間でなければならない。
他のパーセントメソッドと同様に、パスに曲線が存在する場合、パーセント測定は長さに対して線形ではないことに注意してください。曲線が存在する場合、パーセンテージの引数はベジェ方程式の t パラメータにマップされます。
QPainterPath QPainterPath::subtracted(const QPainterPath &p) const
このパスの塗 り面積か らp の塗 り 面積を引いたパ ス を返 し ます。
パスに対する Set 操作は、 パ ス を領域 と し て扱い ます。閉 じ ていないパ ス は暗黙的に閉 じ た も の と し て扱われます。ベジ エ曲線は、 ベジ エ曲線の交差を行 う と 数値的に不安定にな る ため、 線分へ平坦化 さ れ る こ と があ り ます。
[noexcept]
void QPainterPath::swap(QPainterPath &other)
ペインターパスother をこのペインターパスと入れ替えます。こ の操作は非常に高速で、 失敗す る こ と も あ り ません。
QPolygonF QPainterPath::toFillPolygon(const QTransform &matrix = QTransform()) const
QTransform matrix を用いてパスをポリゴンに変換し、ポリゴンを返します。
こ の多角形は、 まずすべてのサブパ ス を多角形へ変換 し 、 次に、 重な り 合 う サブパスが正 し い塗りつぶし規則を用いて塗りつぶ さ れ る よ う にす る ために巻き戻 し 技法を用い る こ と に よ っ て作成 さ れます。
巻き戻しは多角形に追加線を挿入するので、塗りつぶし多角形の輪郭はパスの輪郭と一致しないことに注意してください。
toSubpathPolygons ()、toFillPolygons ()、QPainterPath Conversionも参照 。
QList<QPolygonF> QPainterPath::toFillPolygons(const QTransform &matrix = QTransform()) const
QTransform matrix を用いて、パスをポリゴンのリストに変換し、そのリストを返します。
この関数は、toFillPolygon() 関数と異なり、複数のポリゴンを作成します。これは、描画される点の総数が同じであっても、1つの大きな多角形を描画するよりも、複数の小さな多角形を描画する方が通常は高速であるために提供されています。
toFillPolygons()関数は、toSubpathPolygons()関数とは異なり、境界矩形が重なるサブパスのポリゴンだけを作成します。
toFillPolygon() 関数と同様に、この関数は、重複するサブパスが正しい塗りつぶしルールで塗りつぶされるように、巻き戻しテクニックを使用します。巻き戻しは多角形に追加線を挿入するので、塗りつぶし多角形の輪郭はパスの輪郭と一致しないことに注意してください。
toSubpathPolygons(),toFillPolygon(),QPainterPath Conversionも参照してください 。
QPainterPath QPainterPath::toReversed() const
パスの逆コ ピーを作成 し て返 し ます。
反転されるのは要素の順序です。QPainterPath が指定された順序でmoveTo ()、lineTo ()、cubicTo ()関数を呼び出して構成されている場合、反転コピーはcubicTo ()、lineTo ()、moveTo ()関数を呼び出して構成されます。
QList<QPolygonF> QPainterPath::toSubpathPolygons(const QTransform &matrix = QTransform()) const
QTransform matrix を使用して、パスをポリゴンのリストに変換し、リストを返します。
この関数は、交差するサブパス(すなわち、重なり合う境界矩形)に関係なく、各サブパスに対して1つのポリゴンを作成します。このようなオーバーラップするサブパスが正しく塗りつぶされるようにするには、代わりにtoFillPolygons() 関数を使用してください。
toFillPolygons ()、toFillPolygon ()、QPainterPath Conversionも参照してください 。
void QPainterPath::translate(qreal dx, qreal dy)
パス内のすべての要素を (dx,dy) で変換します。
translated()も参照 。
void QPainterPath::translate(const QPointF &offset)
これはオーバーロードされた関数です。
パス内のすべての要素を、与えられたoffset によって変換します。
translated()も参照 。
QPainterPath QPainterPath::translated(qreal dx, qreal dy) const
(dx,dy) によって翻訳されたパスのコピーを返します。
translate()も参照 。
QPainterPath QPainterPath::translated(const QPointF &offset) const
これはオーバーロードされた関数です。
与えられたoffset によって翻訳されたパスのコピーを返します。
translate()も参照 。
QPainterPath QPainterPath::united(const QPainterPath &p) const
このパスの塗りつぶし領域とp の塗りつぶし領域の和であるパスを返します。
パスに対する集合操作は、 パスを領域 と し て扱います。閉 じ ていないパ ス は暗黙的に閉 じ た も の と し て扱われます。ベジェ曲線は、 ベジェ曲線の交差を行う際の数値的不安定性のために、 線分に平坦化される場合があります。
intersected() およびsubtracted()も参照 。
bool QPainterPath::operator!=(const QPainterPath &path) const
この画家パスが与えられたpath と異なる場合はtrue
を返します。
パスの比較には要素ごとの比較が含まれる場合があり、 複雑なパスの場合は時間がかかることに注意。
operator==()も参照 。
QPainterPath QPainterPath::operator&(const QPainterPath &other) const
このパスとother パスの交点を返します。
intersected()、operator&=()、united() およびoperator|()も参照 。
QPainterPath &QPainterPath::operator&=(const QPainterPath &other)
このパスをother と交差させ、このパスへの参照を返します。
intersected()、operator&()、およびoperator|=()も参照 。
QPainterPath QPainterPath::operator+(const QPainterPath &other) const
このパスとother パスの和を返します。この関数は operator|() と同等です。
united()、operator+=()、operator-() も参照 。
QPainterPath &QPainterPath::operator+=(const QPainterPath &other)
このパスとother を結合し、このパスへの参照を返す。これは operator|=() と同じ。
united()、operator+()、およびoperator-=()も参照 。
QPainterPath QPainterPath::operator-(const QPainterPath &other) const
このパスのコピーからother のパスを引いて、そのコピーを返す。
subtracted()、operator-=()、operator+() も参照 。
QPainterPath &QPainterPath::operator-=(const QPainterPath &other)
このパスからother を減算し、このパスへの参照を返す。
subtracted()、operator-()、およびoperator+=() も参照 。
[noexcept]
QPainterPath &QPainterPath::operator=(QPainterPath &&other)
Move- このQPainterPath インスタンスにother を割り当てます。
QPainterPath &QPainterPath::operator=(const QPainterPath &path)
与えられたpath をこのペインタのパスに割り当てます。
QPainterPath()も参照してください 。
bool QPainterPath::operator==(const QPainterPath &path) const
このペインタパスが与えられたpath と等しい場合、true
を返します。
パスの比較には要素ごとの比較が含まれることがあり、 複雑なパスの場合は時間がかかることに注意しましょう。
operator!=()も参照してください 。
QPainterPath QPainterPath::operator|(const QPainterPath &other) const
このパスとother パスの和を返します。
united()、operator|=()、intersected() およびoperator&()も参照 。
QPainterPath &QPainterPath::operator|=(const QPainterPath &other)
このパスをother と結合し、このパスへの参照を返します。
united()、operator|()、およびoperator&=()も参照 。
関連する非会員
QDataStream &operator<<(QDataStream &stream, const QPainterPath &path)
与えられたペインタpath を与えられたstream に書き込み、stream への参照を返します。
Qt データ型のシリアライズも参照してください 。
QDataStream &operator>>(QDataStream &stream, QPainterPath &path)
与えられたstream から指定されたpath にペインタパスを読み込み、stream への参照を返します。
Qt データ型のシリアライズ」も参照して ください。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。