FireMonkey コンポーネントのレンダリング

提供: Appmethod Topics
移動先: 案内検索

FireMonkey コンポーネント ガイド への移動

2D 基本コンポーネントのレンダリング

コンポーネントのレンダリングを理解するには、まず、関係のある FMX クラス階層について考えます。 TComponent からの TFmxObject 分岐が FMX のルートを形成しており、オブジェクトのライフサイクルを提供します。 そこから TControl (キャンパスをカプセル化し、描画機能を追加する)が派生しています。

TControl の関連する 2 つの分岐として、FMX.Objects ユニット内のプリミティブ クラスと、FMX.Controls、FMX.ExtCtrls などのユニット内のスタイル付きコントロール(ユーザーとのやり取りに関係)があります。 プリミティブには、以下のような図形や画像などのオブジェクトがあります。

さらに、以下のような下位クラスもあります。

スタイル付きコントロールは、TStyledControl から派生し、次のものがあります:

描画か合成か

プリミティブでは、TControl.Paint プロシージャをオーバーライドし、キャンパスに直接描画します。 TStyledControl を具体化した各スタイルは、サブコントロールとプリミティブから成るツリーの配置になります。 スタイルは最終的に、一連のプリミティブが階層化したものに帰着し、今度はそれらのプリミティブがキャンバスに描画されて、コントロールをレンダリングします。

カスタム コンポーネントはどちらか一方の手法で描画することができますし、カスタム プリミティブが含まれているコントロールがある場合は両者の組み合わせで描画することもできます。

  • カスタム プリミティブの場合は、直接 TControl のサブクラスを作成するか、TShape のサブクラスを作成します(TShape には、いくつかのブラシと境界を表す四角形が用意されています)。 必要なプロパティを追加したあと、TControl.Paint をオーバーライドして、TControl.Canvas 上に描画するようにします。
  • TStyledControl のサブクラスでは、TStyledControl.GetStyleObject でクラス名を基に簡単な検索ルーチンを使って、フォームの StyleBook プロパティに割り当てられたスタイル リソースの中から、自らに該当するものを見つけようとします。
    • アプリケーション開発者は、適切な名前のスタイルを作成することで、いつでもコントロールをカスタマイズできます。 そのスタイルは、コントロールのすべてのインスタンスに自動的に適用されます。 また、StyleLookup プロパティを設定することで、個々のコントロールにスタイルを割り当てることができます。
    • スタイル テーマ作成者は、適切な名前のスタイルをテーマ内に作成することで、カスタム コントロールのスタイルを組み込むことができます。
    • 一致するスタイルがない場合のコントロールの外観を定義するために、コンポーネント作成者は GetStyleObject をオーバーライドできます。
      たとえば、以下のようにして、プラットフォーム固有のスタイルを RCDATA としてバンドルできます。
      1. 各プラットフォームの完成したスタイルを .style ファイルとして保存します。
      2. プロジェクトの .rc ファイルを作成し、適切な .style ファイルを RCDATA として参照します。 .rc ファイルは、.res ファイルへとコンパイルされます。
      3. コンパイルの条件付き指令を使用して、各プラットフォームの .res ファイルをインクルードします。
      4. GetStyleObject では、RCDATA からスタイルを、TStyleManager.LoadFromResource メソッドを使用して読み込みます。
      詳細については、「ステップ 3 - スタイルリソースを RCDATA として追加する(Object Pascal)」(FireMonkey コンポーネントの作成(Object Pascal) チュートリアル内)を参照してください。

関連項目