FireMonkey の画像効果の適用
FireMonkey の画像効果 への移動
FireMonkey は、非ビジュアル コンポーネントとして、ツール パレットの Effects カテゴリに現れます。効果がビジュアルな結果につながるのは、ビジュアル コンポーネントの子である場合のみです。 効果は任意の 2D コンポーネントに適用できます。 画像効果は、3D コントロールでは機能しません。ただし、TViewport3D(3D コンテンツを表示する 2D コントロール)では利用できます。
ビジュアル コンポーネントへの FireMonkey 画像効果の適用
効果を適用するには:
- 1. [ツール パレット]で必要な効果をダブルクリックします。これにより、効果がフォームに追加されます。追加された効果は、[構造]ビューにフォーム自体の子として表示されます。
[ツール パレット]の効果 |
フォームに追加された効果 |
- 2. [構造]ビューで、効果を適用したいコンポーネントの下に効果をドラッグします。 これで効果がビジュアル コンポーネント(ここでは Image1)の子になります。
画像に TBloomEffect を適用 |
効果のプロパティのカスタマイズ
ほとんどすべての効果に固有のプロパティがあり、アプリケーションに応じてカスタマイズすることができます。これらのプロパティは、[構造]ビューで効果を選択すると、[オブジェクト インスペクタ]に表示されます。
TBloomEffect のプロパティ |
効果を適用すると、コンポーネントのすべてのピクセルが影響を受けます。 ビジュアルな結果がどうなるかは、カスタマイズ対象のコンポーネントのピクセルによって異なります。 たとえば、特にアルファに作用する効果では、透明なピクセルは変更されません。 効果の固有のプロパティを変更すると、効果のビジュアルな結果を強めることができます。
次の例では、TBloomEffect を Button1 に適用します。Button2 は何も効果を適用しないままです。ボタンのデフォルト色は元々明るい色なので、TBloomEffect のプロパティがデフォルト値のままでは、見かけに差は生まれません。ただし、TBloomEffect のプロパティを変更すると、違いが明らかになります。
プロパティ | 結果 |
---|---|
デフォルトではどの効果の Enabled プロパティも True
に設定されているため、親になったビジュアル コンポーネントには即座に効果が適用されます。 効果の Enabled フラグは、プログラムでもフォーム デザイナでも設定できます。
[オブジェクト インスペクタ]で Enabled を設定 | プログラムで Enabled を設定 |
---|---|
Delphi: BloomEffects1.Enable := False;
C++: BloomEffects1->Enable = false;
|
効果のトリガの設定
画像効果はプロパティの変更(Enabled フラグの設定に対応)によって、トリガできます。 トリガは、どのプロパティでも動作するわけではなく、コンポーネントの内部イベントの処理中にチェックされる特定のプロパティによってのみ動作します。 すべての組み込みトリガは、論理型のプロパティをチェックします。慣習として、これらのプロパティの名前は "Is" で始まります。
TControl では、すべてのコントロールおよび図形で使用できるよう、4 つのトリガを提供しています。
- IsDragOver
- IsFocused
- IsMouseOver(HitTest を
True
に設定することが必要) - IsVisible
その他の組み込みトリガには、以下のものがあります。
- IsActive(TCustomForm)
- IsChecked(TMenuItem)
- IsOpen(TEffect)
- IsPressed(FMX.StdCtrls.TCustomButton)
- IsSelected(TMenuItem、TTabItem、TListBoxItem、TTreeViewItem)
メモ: アニメーション効果のトリガ セットは、少し異なります。FMX.Controls.TControl には、ApplyTriggerEffect の他に、StartTriggerAnimation、StartTriggerAnimationWait、StopTriggerAnimation という手続きが定義されています。
コードやユーザー アクションの結果として、これらのプロパティが変化したときに適用する効果を設定できます。 トリガ条件が満たされなくなると、効果がなくなります。 トリガ条件は等しいかどうかのチェックに限られています。トリガに複数の条件が含まれている場合、トリガが発生するには、それらすべての条件が真と評価されなければなりません。
トリガは、セミコロンで区切られた 1 つ以上のトリガ条件を含む文字列として表現されます。 それぞれのトリガ条件は、プロパティ名、等号記号(=)、トリガ値で構成されます。 すべての組み込みトリガは論理値です。したがって、それらの値は True
または False
でなければなりません。 例:
Delphi:
IsMouseOver := True;
IsPressed := False;
C++:
IsMouseOver = true;
IsPressed = false;
トリガ条件は[Trigger]プロパティに保存されます。
効果のアニメーション化
少数のごく単純な画像効果(TInvertEffect など)には追加プロパティがありません。有効と無効のいずれかです。ただし、多くの効果には動作の状況を制御するプロパティ(数値の大小やカウントなど)があります。特に、推移には[Progress]プロパティがあり、パーセント値はゼロから 100 です。ダイナミックなビジュアル効果を作成するため、TFloatAnimation を、これらのプロパティにコードで、または[オブジェクト インスペクタ]で付加できます。推移の進行をアニメーション化する方法は、「画像効果のプロパティにアニメーション効果を適用する」を参照してください。