グラフィックの概要

提供: RAD Studio
移動先: 案内検索

コンポーネントにおけるグラフィックの利用:インデックス への移動

Delphi は,Windows GDI をいくつかのレベルでカプセル化します。コンポーネント開発者にとって重要なのは,コンポーネントがどのようにして画面にイメージを表示するかということです。GDI 関数を直接呼び出す場合には,まずデバイスコンテキストのハンドルが必要です。デバイスコンテキストには,ペン,ブラシ,フォントなどの多様な描画ツールを選択しておきます。グラフィックイメージをレンダリングした後は,破棄する前にデバイスコンテキストを元の状態に復元しておかなければなりません。

Delphi では,そうした細かい処理は必要ありません。Delphi のコンポーネントには,グラフィック用の単純で完備したインターフェース,つまり Canvas プロパティがあります。キャンバスは,有効なデバイスコンテキストを用意し,使用後にはそのデバイスコンテキストを解放します。またキャンバスは,現在のペン,ブラシ,フォントを示す独自のプロパティを持っています。

キャンバスがすべてのリソースを開発者にかわって管理するので,開発者はペンハンドルなどの作成,選択,解放に気を使用する必要がなくなります。使用するペンの種類をキャンバスに指示しておけば,その後の作業はキャンバスが処理します。

Delphi はリソースを後の使用に備えてキャッシュに入れておくので,繰り返し行う処理のスピードが向上します。これも,グラフィックリソースの管理を Delphi に任せることの効果です。たとえば,あるペンツールを繰り返し作成し,使用し,破棄するプログラムの場合,そのツールを使用するたびに同じ手順を繰り返します。一方,Delphi では,繰り返し使用されるツールはキャッシュにある公算が高いため,Delphi はツールを再作成するかわりに既存のツールを使用します。

この例として,アプリケーションが数十個のフォームを開き,数百個のコントロールを持つ場合を想定します。これらのコントロールは,それぞれ 1 つまたは複数の TFont プロパティを持ちます。この場合,TFont オブジェクトのインスタンスが数百,数千と作成される可能性がありますが,大半のアプリケーションでは,フォントキャッシュを利用することにより 2 つか 3 つのフォントハンドルが使用されるだけで済みます。