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 をオーバーライドすることができます。