このページでは

描画と塗りつぶし

描画

QPainter は、GUI プログラムで必要とされる描画の大部分を実行するための、高度に最適化された関数を提供します。単純なグラフィカルプリミティブ(QPoint 、QLine 、QRect 、QRegion 、QPolygon クラスで表される)から、ベクトルパスなどの複雑な形状まで、あらゆるものを描画できます。Qt では、ベクトルパスはQPainterPath クラスによって表されます。QPainterPath は、描画操作のためのコンテナを提供し、グラフィカルな形状の構築と再利用を可能にします。

Qtのロゴ

QPainterPath

ペインターパスは、直線と曲線で構成されるオブジェクトです。たとえば、矩形は直線で構成され、楕円は曲線で構成されます。

通常の描画操作に比べてペインターパスの主な利点は、複雑な形状を一度作成するだけで済み、その後はQPainter::drawPath()関数を呼び出すだけで何度でも描画できることです。

QPainterPath オブジェクトは、塗りつぶし、アウトライン描画、クリッピングに使用できます。指定されたペインターパスに対して塗りつぶし可能なアウトラインを生成するには、QPainterPathStroker クラスを使用します。

線やアウトラインは、QPen クラスを使用して描画されます。ペンは、そのスタイル(つまり線の種類)、幅、ブラシ、端点の描画方法(cap-style)、および2本の接続された線間の接合部の描画方法(join-style)によって定義されます。 ペンのブラシは、そのペンで生成されたストロークを塗りつぶすために使用されるQBrush オブジェクトであり、つまり、QBrush クラスが塗りつぶしパターンを定義します。

QPainter また、整列されたテキストやピクマップを描画することもできます。

テキストを描画する場合、フォントはQFont クラスを使用して指定されます。 Qt は、指定された属性を持つフォントを使用します。一致するフォントが存在しない場合は、最も近いインストール済みフォントが使用されます。実際に使用されるフォントの属性は、QFontInfo クラスを使用して取得できます。さらに、QFontMetrics クラスはフォントの寸法情報を提供し、QFontDatabase クラスは、基盤となるウィンドウシステムで利用可能なフォントに関する情報を提供します。

通常、QPainter は「自然な」座標系で描画を行いますが、QTransform クラスを使用してビュー変換やワールド変換を行うことも可能です。詳細については、「座標系」を参照してください。そこでは、レンダリングプロセス(すなわち、論理表現とレンダリングされたピクセルとの関係)や、アンチエイリアス描画の利点についても説明されています。

アンチエイリアス描画

描画時、ピクセルのレンダリングはQPainter::Antialiasing というレンダリングヒントによって制御されます。QPainter::RenderHint 列挙型は、QPainter に対してフラグを指定するために使用されますが、これらのフラグが特定のエンジンによって尊重されるかどうかは保証されません。

QPainter::Antialiasing の値は、可能であればエンジンがプリミティブのエッジにアンチエイリアス処理を行うべきであることを示します。つまり、色の濃淡を変化させることでエッジを滑らかにする処理です。

アンチエイリアシングを適用してレンダリングされた図を表示したスクリーンショット

塗りつぶし

図形の塗りつぶしは、QBrush クラスを使用して行われます。ブラシは、その色とスタイル(つまり、塗りつぶしのパターン)によって定義されます。

Qt XML では、すべての色が RGB、HSV、CMYK カラーモデルをサポートする `QColor ` クラスによって表現されます。`QColor ` は、アルファブレンディングによるアウトラインおよび塗りつぶし(透明効果の指定)もサポートしており、このクラスはプラットフォームおよびデバイスに依存しません。詳細については、`QColor ` クラスのドキュメントを参照してください。

利用可能な塗りつぶしパターンは、Qt::BrushStyle 列挙型で定義されています。これらには、単色から非常にまばらなパターンに至る基本的なパターン、さまざまな線の組み合わせ、グラデーション塗りつぶし、およびテクスチャが含まれます。Qtでは、カスタムグラデーション塗りつぶしを定義するためにQGradient クラスを提供しており、テクスチャパターンはQPixmap クラスを使用して指定します。

グラデーションの例のスクリーンショット

QGradient

QGradient クラスは、QBrush と組み合わせて使用し、グラデーション塗りつぶしを指定します。

グラデーションの使用方法としてサポートされている3つの異なる方法を示したイラスト

Qtは現在、3種類のグラデーション塗りつぶしをサポートしています。線形グラデーションは開始点と終了点の間で色を補間し、放射状グラデーションは焦点とそれを囲む円上の終了点の間で色を補間し、円錐グラデーションは中心点を中心に色を補間します。

© 2026 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.