描画と塗りつぶし
描画
QPainter は、GUI プログラムが必要とするほとんどの描画を行うために、高度に最適化された関数を提供します。単純なグラフィカル・プリミティブ( 、 、 、 、 の各クラスで表現)から、ベクトル・パスのような複雑な形状まで描画することができます。Qt では、ベクトル・パスは クラスで表現されます。 は描画操作のためのコンテナを提供し、グラフィカルな形状を構築して再利用できるようにします。QPoint QLine QRect QRegion QPolygon QPainterPath QPainterPath
QPainterPath ペインタパスは、線と曲線で構成されるオブジェクトです。例えば、矩形は線で構成され、楕円は曲線で構成されます。 通常の描画操作に対するペインタパスの主な利点は、複雑な図形を一度だけ作成すれば、QPainter::drawPath() 関数を呼び出すだけで何度でも描画できることです。 QPainterPath オブジェクトは塗りつぶし、アウトライン、クリッピングに使えます。与えられたペインタパスに対して塗りつぶし可能なアウトラインを生成するには、QPainterPathStroker クラスを使用します。 |
線と輪郭はQPen クラスを使って描画します。ペンは、そのスタイル (すなわち線種)、幅、ブラシ、終点の描画方法 (キャップスタイル)、および 2 つの接続線間の結合の描画方法 (結合スタイル) によって定義されます。ペンのブラシは、ペンで生成されたストロークを塗りつぶすために使用されるQBrush オブジェクトです。つまり、QBrush クラスが塗りつぶしパターンを定義します。
QPainter は、整列されたテキストやピクセルマップも描画できます。
テキストを描画する場合、フォントはQFont クラスを使って指定します。Qt は、指定された属性を持つフォントを使用します。一致するフォントが存在しない場合、Qt はインストールされているフォントの中で最も近いものを使用します。実際に使用されるフォントの属性は、QFontInfo クラスを使って取得できます。さらに、QFontMetrics クラスはフォントの測定値を提供し、QFontDatabase クラスは基礎となるウィンドウ・システムで利用可能なフォントに関する情報を提供します。
通常、QPainter は "自然な" 座標系で描画しますが、QTransform クラスを使用してビューとワールドの変換を実行することができます。詳細については、座標系を参照してください。また、レンダリングプロセス、つまり論理表現とレンダリングされたピクセルの関係、およびアンチエイリアス描画の利点についても説明しています。
アンチエイリアス描画 描画時、ピクセルレンダリングはQPainter::Antialiasing レンダーヒントによって制御されます。QPainter::RenderHint enum はQPainter にフラグを指定するのに使われます。 QPainter::Antialiasing の値は、エンジンが可能であればプリミティブのエッジをアンチエイリアスする、つまり異なる色の強度を使用してエッジを滑らかにすることを示します。 |
塗りつぶし
シェイプはQBrush クラスを使用して塗りつぶされます。ブラシは、色とスタイル(塗りつぶしパターン)によって定義されます。
Qt では、RGB、HSV、CMYK のカラーモデルをサポートするQColor クラスで色を表現できます。QColor は、アルファブレンドされたアウトラインと塗りつぶし(透明効果の指定)もサポートしており、このクラスはプラットフォームやデバイスに依存しません(色は、QColormap クラスを使用してハードウェアにマッピングされます)。詳細については、QColor クラスのドキュメントを参照してください。
利用可能な塗りつぶしパターンは、Qt::BrushStyle enumで記述されています。これには、均一な色から非常に疎なパターンまでの基本パターン、さまざまな線の組み合わせ、グラデーション塗りつぶし、テクスチャが含まれます。Qt では、カスタム・グラデーション塗りつぶしを定義するためにQGradient クラスを提供しており、テクスチャ・パターンはQPixmap クラスを使って指定します。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。