FireMonkey のプリミティブ コントロールを作成する
FireMonkey のプリミティブ コントロールとスタイル付きコントロール への移動
このチュートリアルでは、マルチデバイス フォームに正多角形を描画する FireMonkey プリミティブ コントロールを作成します。
プリミティブ コントロールは、スタイル付きコントロールと違って、選択したスタイルによってルック アンド フィールを変えることができません。プリミティブ コントロールの場合、背景色などのルック アンド フィールは、プロパティ(Fill プロパティなど)を使って変更します。この 2 つの種類のコントロールの関係を理解するには、「FireMonkey のプリミティブ コントロールとスタイル付きコントロール」を参照してください。
このチュートリアルで作成するコントロールは、TRegularPolygon という名前で、辺の数を指定するための NumberOfSides プロパティを持っています。正多角形なので、辺の他に頂点も同じ数になります。
TRegularPolygon コンポーネント
次に示すのは、NumberOfSides プロパティの値を様々に変化させた多角形です。
プリミティブ コントロールで最低限必要なのは、自身を描画するよう Paint メソッドを上書きすることです。そのために、プリミティブ コントロールでは Canvas プロパティを使用します。例として、TEllipse クラスの Paint メソッドの実装を次に示します。
procedure TEllipse.Paint;
begin
Canvas.FillEllipse(GetShapeRect, AbsoluteOpacity);
Canvas.DrawEllipse(GetShapeRect, AbsoluteOpacity);
end;
Canvas オブジェクトが提供している数多くのメソッドでは、内部で GPU を使用して、プラットフォームごとに描画処理のパフォーマンスを最大化しています。 そのため、プラットフォーム(Windows や macOS など)ごとのパフォーマンスの最適化を考慮する必要はありません。
もう 1 つ、上書きしなければならない可能性があるメソッドが PointInObject です。このメソッドは、指定された点がオブジェクトに属するかどうかを FireMonkey フレームワークに知らせるためのものです。FireMonkey フレームワークは、この情報を基に、コンポーネントの再描画が必要か、マウスがコントロール上にあるかなどを評価することができます。
手順
FireMonkey プリミティブ コントロールを作成するために必要な基本ステップは以下のとおりです。
- ステップ 1 - [コンポーネントの新規作成]ウィザードを使って新規コンポーネントを作成する
- ステップ 2 - 辺の数を指定するプロパティを実装する
- ステップ 3 - 多角形を描画するパスを定義する
- ステップ 4 - Paint メソッドと PointInObject メソッドを実装する
- ステップ 5 - FireMonkey プリミティブ コンポーネントをテストする
- ステップ 6 - ルック アンド フィールを変更するためのプロパティを追加する