QPen Class
QPenクラスは、QPainter 、図形の線や輪郭をどのように描画するかを定義します。詳細...
Header: | #include <QPen> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
パブリック関数
QPen() | |
QPen(Qt::PenStyle style) | |
QPen(const QColor &color) | |
QPen(const QBrush &brush, qreal width, Qt::PenStyle style = Qt::SolidLine, Qt::PenCapStyle cap = Qt::SquareCap, Qt::PenJoinStyle join = Qt::BevelJoin) | |
QPen(const QPen &pen) | |
QPen(QPen &&pen) | |
~QPen() | |
QBrush | brush() const |
Qt::PenCapStyle | capStyle() const |
QColor | color() const |
qreal | dashOffset() const |
QList<qreal> | dashPattern() const |
bool | isCosmetic() const |
bool | isSolid() const |
Qt::PenJoinStyle | joinStyle() const |
qreal | miterLimit() const |
void | setBrush(const QBrush &brush) |
void | setCapStyle(Qt::PenCapStyle style) |
void | setColor(const QColor &color) |
void | setCosmetic(bool cosmetic) |
void | setDashOffset(qreal offset) |
void | setDashPattern(const QList<qreal> &pattern) |
void | setJoinStyle(Qt::PenJoinStyle style) |
void | setMiterLimit(qreal limit) |
void | setStyle(Qt::PenStyle style) |
void | setWidth(int width) |
void | setWidthF(qreal width) |
Qt::PenStyle | style() const |
void | swap(QPen &other) |
int | width() const |
qreal | widthF() const |
QVariant | operator QVariant() const |
bool | operator!=(const QPen &pen) const |
QPen & | operator=(QPen &&other) |
QPen & | operator=(const QPen &pen) |
bool | operator==(const QPen &pen) const |
関連する非メンバー
QDataStream & | operator<<(QDataStream &stream, const QPen &pen) |
QDataStream & | operator>>(QDataStream &stream, QPen &pen) |
詳細説明
ペンには、style()、width()、brush()、capStyle()、joinStyle() があります。
ペンのスタイルは線の種類を定義します。ブラシは、ペンで生成されたストロークを塗りつぶすために使用されます。塗りつぶしスタイルを指定するにはQBrush クラスを使います。キャップスタイルは、QPainter を使って描画できる線端のキャップを決定し、結合スタイルは、2つの線間の結合をどのように描画するかを記述します。ペン幅は、整数 (width()) と浮動小数点 (widthF()) の両方の精度で指定できます。線幅0は化粧ペンを示します。これは、ペインターで設定されたtransformation とは無関係に、ペン幅が常に1ピクセル幅で描画されることを意味します。
さまざまな設定は、対応するsetStyle(),setWidth(),setBrush(),setCapStyle(),setJoinStyle() 関数を使用して簡単に変更できます (ペンのプロパティを変更するときは、ペインターのペンをリセットする必要があることに注意してください)。
例えば
QPainter painter(this); QPen pen(Qt::green, 3, Qt::DashDotLine, Qt::RoundCap, Qt::RoundJoin); painter.setPen(pen);
と同じです。
QPainter painter(this); QPen pen; // creates a default pen pen.setStyle(Qt::DashDotLine); pen.setWidth(3); pen.setBrush(Qt::green); pen.setCapStyle(Qt::RoundCap); pen.setJoinStyle(Qt::RoundJoin); painter.setPen(pen);
デフォルトのペンは、幅1、角キャップスタイル(Qt::SquareCap)、ベベルジョインスタイル(Qt::BevelJoin)の黒ベタブラシです。
さらに QPen は、color() とsetColor() 便利関数を提供し、それぞれペンのブラシの色を抽出および設定します。ペンの比較やストリームも可能です。
一般的なペイントの詳細については、ペイントシステムのドキュメントを参照してください。
ペンのスタイル
Qt では、Qt::PenStyle enum で表されるいくつかの組み込みスタイルを提供しています:
setStyle ()関数を使うだけで、ペンのスタイルを組み込みスタイルのいずれかに変換することができます。ただし、Qt::CustomDashLine スタイルについては後ほど説明します。スタイルをQt::NoPen に設定すると、ペインターは線や輪郭を描かないようになります。デフォルトのペンスタイルはQt::SolidLine です。
Qt 4.1 以降では、setDashPattern() 関数を使用して、カスタムのダッシュパターンを指定することも可能です。この関数は、ペンのスタイルを暗黙のうちにQt::CustomDashLine に変換します。パターンの引数であるQList は、偶数個のqreal エントリとして指定する必要があります。例えば、上記のカスタム・パターンは以下のコードで作成される:
QPen pen; QList<qreal> dashes; qreal space = 4; dashes << 1 << space << 3 << space << 9 << space << 27 << space << 9 << space; pen.setDashPattern(dashes);
ダッシュ・パターンはペンの幅単位で指定されることに注意してください。例えば、幅10で長さ5のダッシュは50ピクセルの長さです。
現在設定されているダッシュパターンは、dashPattern ()関数を使用して取得できます。isSolid() 関数を使用して、ペンにベタ塗りがあるかどうかを判定します。
キャップスタイル
キャップスタイルは、QPainter を使用して、線の終点をどのように描画するかを定義します。キャップ・スタイルは、幅の広い線、つまり幅が1以上の線にのみ適用されます。Qt::PenCapStyle enum は以下のスタイルを提供します:
Qt::SquareCap スタイルは、終点を覆い、そこから線幅の半分だけはみ出す正方形の線端です。Qt::FlatCap スタイルは、終点を覆わない正方形の行末です。そしてQt::RoundCap スタイルは、終点を覆う丸みを帯びた線端です。
デフ ォル ト はQt::SquareCap です。
ペン幅が 0 か 1 のときに端点が描画されるかどうかは、キャップスタイルに依存します。Qt::SquareCap またはQt::RoundCap では描画され、Qt::FlatCap では描画されません。
結合ス タ イル
結合スタイルは、QPainter を使って、2 つの連結線間の結合をどのように描画するかを定義します。結合ス タ イルは幅の広い線にのみ、 すなわち幅が 1 以上の場合にのみ適用 さ れます。Qt::PenJoinStyle enum には以下のス タ イ ルがあ り ます:
Qt::BevelJoin ス タ イ ルは、 2 本の線の間の三角形の切 り 落 と し を塗 り ます。Qt::MiterJoin スタイルは、線が斜めに交わるように伸ばします。そして、Qt::RoundJoin スタイルは、2つの線の間の円弧を塗りつぶします。
デフォルトはQt::BevelJoin です。
Qt::MiterJoin スタイルが適用されている場合、setMiterLimit() 関数を使用して、マイター結合が結合点からどこまで伸びるかを指定することができます。miterLimit() は、 線が平行に近い場合に、 線の結合間のア ーテ ィ フ ァ ク ト を軽減す る ために用い ら れます。
miterLimit() はペンの幅単位で指定する必要があります。例えば、幅 10 のマイターリミット 5 は 50 ピクセルの長さになります。デフ ォル ト のマ イ タ リ ミ ッ ト は 2 で、 すなわちペ ン幅の 2 倍 (ピ ク セル単位) です。
パス描画の例 パス描画の例では、Qt 組み込みのダッシュパターンを示し、利用可能なパターンの範囲を拡張するためにカスタムパターンをどのように使用できるかを示しています。 |
QPainter,QBrush,Path Stroking Example,Scribble Exampleも参照してください 。
メンバ関数ドキュメント
QPen::QPen()
幅 1 のデフォルトの黒実線ペンを構築します。
QPen::QPen(Qt::PenStyle style)
幅が 1 で、与えられたstyle を持つ黒のペンを構築する。
setStyle()も参照 。
QPen::QPen(const QColor &color)
幅が 1 で、与えられたcolor を持つ実線のペンを構築します。
QPen::QPen(const QBrush &brush, qreal width, Qt::PenStyle style = Qt::SolidLine, Qt::PenCapStyle cap = Qt::SquareCap, Qt::PenJoinStyle join = Qt::BevelJoin)
指定されたbrush,width, penstyle,cap style およびjoin style を持つペンを構築します。
setBrush()、setWidth()、setStyle()、setCapStyle()、およびsetJoinStyle() も参照 。
[noexcept]
QPen::QPen(const QPen &pen)
指定されたpen のコピーであるペンを構築します。
[noexcept]
QPen::QPen(QPen &&pen)
指定されたpen から移動されたペンを構築します。
移動元のペンは、割り当て、コピー、破棄のみが可能です。それ以外の操作 (代入の前) は、未定義の動作につながります。
[noexcept]
QPen::~QPen()
ペンを破棄します。
QBrush QPen::brush() const
このペンで生成されたストロークを塗りつぶすために使用されるブラシを返します。
setBrush()も参照してください 。
Qt::PenCapStyle QPen::capStyle() const
ペンのキャップスタイルを返します。
setCapStyle() およびCap Style も参照して ください。
QColor QPen::color() const
このペンのブラシの色を返します。
brush() およびsetColor() も参照 ください。
qreal QPen::dashOffset() const
ペンのダッシュオフセットを返します。
setDashOffset() も参照 ください。
QList<qreal> QPen::dashPattern() const
このペンのダッシュパターンを返します。
setDashPattern()、style() およびisSolid() も参照 。
bool QPen::isCosmetic() const
ペンが化粧品である場合はtrue
を返し、そうでない場合はfalse
を返します。
化粧ペンは、QPainter に適用される変換に関係なく、一定の幅を持つストロークを描画するために使用されます。コスメティックペンで図形を描画すると、その輪郭は、異なるスケールファクターでも同じ太さになります。
幅ゼロのペンはデフォルトで化粧ペンです。
setCosmetic() およびwidthF()も参照して ください。
bool QPen::isSolid() const
ペンがベタ塗りの場合はtrue
を返し、そうでない場合は false を返します。
style() およびdashPattern() も参照 。
Qt::PenJoinStyle QPen::joinStyle() const
ペンの結合スタイルを返します。
setJoinStyle() およびJoin Style も参照 。
qreal QPen::miterLimit() const
ペンのマイター限界値を返します。マイターリミットは、結合スタイルがQt::MiterJoin に設定されている場合にのみ関係します。
setMiterLimit() およびJoin Styleも参照 。
void QPen::setBrush(const QBrush &brush)
このペンで生成されたストロークを塗りつぶすのに使われるブラシを、指定されたbrush に設定します。
void QPen::setCapStyle(Qt::PenCapStyle style)
ペンのキャップスタイルを指定されたstyle に設定します。デフ ォル ト 値はQt::SquareCap です。
void QPen::setColor(const QColor &color)
このペンのブラシの色を、与えられたcolor に設定します。
void QPen::setCosmetic(bool cosmetic)
cosmetic の値によって、このペンを化粧ペンまたは非化粧ペンに設定します。
isCosmetic() も参照 。
void QPen::setDashOffset(qreal offset)
このペンのダッシュオフセット (ダッシュパターンの始点) を、指定されたoffset に設定します。オフセットは、ダッシュパターンを指定するために使用される単位で測定されます。
たとえば、各ストロークの長さが 4 単位で、その後に 2 単位のギャップがあるパターンは、線として描画されたとき、ストロークから始まります。 しかし、ダッシュオフセットが4.0に設定されている場合、描かれた線はギャップから始まる。4.0までのオフセットの値ではストロークの一部が最初に描かれ、4.0から6.0までのオフセットの値ではギャップの一部から線が始まる。 |
注意: これはペンのスタイルを暗黙的にQt::CustomDashLine に変換します。
dashOffset()も参照 。
void QPen::setDashPattern(const QList<qreal> &pattern)
このペンのダッシュパターンを、与えられたpattern に設定します。これは暗黙的にペンのスタイルをQt::CustomDashLine に変換する。
このパターンは、偶数の正の数で指定する必要があり、1, 3, 5...がダッシュ、2, 4, 6...がスペースとなる。例えば
例えば、幅10で長さ5のダッシュは50ピクセルの長さです。幅0のペンは、幅1ピクセルの化粧ペンと同じであることに注意してください。
各ダッシュにはキャップスタイルも適用されるため、正方形のキャップが設定された1のダッシュは、各方向に0.5ピクセルずつ広がり、合計の幅は2になります。
デフ ォル ト のキ ャ ッ プ ス タ イ ルはQt::SquareCap であ り 、 こ れは正方形の線端が端点を覆い、 線幅の半分だけその端点を超え る こ と を意味 し ます。
setStyle(),dashPattern(),setCapStyle(),setCosmetic()も参照 。
void QPen::setJoinStyle(Qt::PenJoinStyle style)
ペンの結合スタイルを指定されたstyle に設定します。デフォルト値はQt::BevelJoin 。
joinStyle() およびJoin Styleも参照してください 。
void QPen::setMiterLimit(qreal limit)
このペンのマイター限界を、指定されたlimit に設定します。
マ イ タ ー限界は、 マ イ タ ー結合が結合点か ら ど の位 置ま で拡張で き る かを記述 し ます。こ れは、 線が平行に近 い線結合の間のア ーテ ィ フ ァ ク ト を軽減す る ために用い ら れます。
こ の値は、 ペ ン ス タ イ ルがQt::MiterJoin に設定 さ れてい る と き にのみ効力を持ち ます。 こ の値はペ ンの幅を単位 と し て指定 さ れます。デフォルトのマイターリミットは2、つまりピクセル単位のペン幅の2倍です。
miterLimit(),setJoinStyle(),Join Styleも参照 。
void QPen::setStyle(Qt::PenStyle style)
ペンのスタイルを指定されたstyle に設定します。
利用可能なスタイルの一覧はQt::PenStyle のドキュメントを参照してください。Qt 4.1 以降では、setDashPattern() 関数を使用してカスタム・ダッシュ・パターンを指定することも可能です。この関数は、ペンのスタイルを暗黙のうちにQt::CustomDashLine に変換します。
注意: この関数はダッシュオフセットをゼロにリセットします。
void QPen::setWidth(int width)
ペン幅を、整数精度でピクセル単位で与えられたwidth に設定する。
線幅ゼロは、化粧ペンを示す。これは、ペインタに設定されたtransformation とは無関係に、ペン幅が常に1ピクセル幅で描画されることを意味します。
ペン幅を負の値で設定することはサポートされていません。
setWidthF() およびwidth()も参照して ください。
void QPen::setWidthF(qreal width)
ペン幅を、浮動小数点精度でピクセル単位で与えられたwidth に設定します。
線幅ゼロは、化粧ペンを示します。これは、ペインター上のtransformation とは無関係に、ペン幅が常に1ピクセル幅で描画されることを意味します。
ペン幅を負の値で設定することはサポートされていません。
setWidth() およびwidthF()も参照して ください。
Qt::PenStyle QPen::style() const
ペンのスタイルを返します。
setStyle() およびPen Style も参照して ください。
[noexcept]
void QPen::swap(QPen &other)
ペンother をこのペンと入れ替えます。この操作は非常に高速で、失敗することはありません。
int QPen::width() const
ペン幅を整数精度で返します。
qreal QPen::widthF() const
ペン幅を浮動小数点精度で返します。
QVariant QPen::operator QVariant() const
ペンをQVariant として返します。
bool QPen::operator!=(const QPen &pen) const
ペンが与えられたpen と異なる場合はtrue
を返し、そうでない場合は false を返します。2つのペンが異なるスタイル、幅、色を持っている場合、2つのペンは異なります。
operator==()も参照してください 。
[noexcept]
QPen &QPen::operator=(QPen &&other)
Move-other をこのQPen インスタンスに割り当てます。
[noexcept]
QPen &QPen::operator=(const QPen &pen)
与えられたpen をこのペンに割り当て、このペンへの参照を返す。
bool QPen::operator==(const QPen &pen) const
ペンが与えられたpen と等しい場合はtrue
を返し、そうでない場合は false を返します。2つのペンのスタイル、幅、色が等しい場合は等しい。
operator!=()も参照してください 。
関連する非会員
QDataStream &operator<<(QDataStream &stream, const QPen &pen)
与えられたpen を与えられたstream に書き込み、stream への参照を返します。
Qt データ型のシリアライズも参照して ください。
QDataStream &operator>>(QDataStream &stream, QPen &pen)
与えられたstream から与えられたpen にペンを読み込み、stream への参照を返します。
Qt データ型のシリアライズ」も参照して ください。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。