描画用キャンバスの利用
コンポーネントにおけるグラフィックの利用:インデックス への移動
キャンバス クラスはグラフィック コントロールを各種レベル(個別の線、図形およびテキストを描画するための高レベル関数など)でカプセル化します。Vcl.Graphics.TCustomCanvas クラスは、VCL(Visual Component Library)で定義するすべてのキャンバス オブジェクトに対して抽象基底クラスを定義します。VCL の多くのコントロールには、関連キャンバス オブジェクトがありますが、例外は内部的には Windows コントロールにバインドされているコントロール(Vcl.StdCtrls.TButton など)や描画に上位のキャンバスを使用するコントロール(Vcl.ExtCtrls.TPaintBox など)です。
Vcl.Graphics.TCustomCanvas には 2 つの主要な下位クラスがあります。
- Vcl.Graphics.TCanvas、HDC(Windows GDI デバイス コンテキスト)をラップする。
- Vcl.Direct2D.TDirect2DCanvas、Windows Direct2D API をラップする。
すべての VCL コントロールは Vcl.Graphics.TCanvas の下位クラスを使用することに注意してください。多くの Windows OS では Direct2D のキャンバスをサポートしないからです。Vcl.Direct2D.TDirect2DCanvas をサポートする Windows のバージョンは、Windows 7 だけです。
概念上は、キャンバスは 3 種類の抽象レベル(高レベル、中間レベル、低レベル)に分けられます。各レベルでは、機能セットを定義します。高レベル機能は、すべてのキャンバスで利用できます。実装の詳細は関係ありません。中間レベルは意味的にはキャンバスの実装にかかわらず同一ですが、公開された public インターフェイスは異なることがあります。最後に低レベルでは、実装に依存する機能が公開されます。
次の表に、3 種類の抽象レベルを示します。高レベルとして定義されているが、すべてのキャンバスの下位クラスではまだ実装されていない関数もあるので、参照情報として考えてください。
高レベルの機能
処理 | ツール |
---|---|
線や図形の描画 |
メソッド(MoveTo、LineTo、Rectangle および Ellipse など) |
テキストの表示と測定 |
TextOut、TextHeight、TextWidth および TextRect の各メソッド |
領域の塗りつぶし |
FillRect と FloodFill メソッド |
中間レベルの機能
処理 | ツール |
---|---|
テキストとグラフィックのカスタマイズ |
Pen、Brush および Font の各プロパティ |
低レベルの機能
処理 | ツール |
---|---|
Windows GDI 関数の呼び出し |
Handle プロパティ(Vcl.Graphics.TCanvas) |
Windows Direct2D 関数の呼び出し(Vcl.Direct2D.TDirect2DCanvas) |
RenderTarget プロパティ |
ピクセルの操作 |
Pixels プロパティ(Vcl.Graphics.TCanvas) |
画像のコピーとマージ |
Draw、StretchDraw、BrushCopy および CopyRect の各メソッド、CopyMode プロパティ(Vcl.Graphics.TCanvas) |
高度の描画処理 |
DrawEllipse、DrawGeometry、FillRectangle(Vcl.Direct2D.TDirect2DCanvas) |
関連項目
- キャンバスの使用
- Direct2D キャンバスの使用
- Vcl.Graphics.TCustomCanvas
- Vcl.Graphics.TCanvas
- Vcl.Controls.TControlCanvas
- Vcl.Direct2D.TDirect2DCanvas