AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
DelphiXE3 [FMX] スムーズ拡大効果(SmoothMagnifyEffect)2013/11/28
 
前回は [Effects]内の「拡大鏡効果」(MagnifyEffect)について見てみました。次は同じく [Effects]内の「スムーズ拡大効果」(SmoothMagnifyEffect)を見てみます。
 
 
[Effects]内
FMX
 
ヘルプより。
TSmoothMagnifyEffect は、ビジュアル オブジェクトのテクスチャの円形領域をスムーズに拡大する効果を作成するためのクラスです。詳細は、「TImageFXEffect」および「FireMonkey の画像効果」を参照してください。
 
円形領域の中心は Center プロパティで指定されます。
拡大された円形領域は以下の 2 つの同心円帯から成ります。
・内側の円形領域。ここには単純な TMagnifyEffect 効果が適用されます。InnerRadius プロパティで、中心にある円形領域の半径が指定されます。この領域では、単一の倍率が適用されます。
・外側の円形領域。OuterRadius プロパティで、この領域の半径が指定されます。この領域では、内側の円形領域の倍率に達するまで、倍率が外側の半径から内側の半径へと徐々に増加します。
OuterRadius 値が InnerRadius 値以下の場合、TSmoothMagnifyEffect の効果は TMagnifyEffect と同じになります。
円形領域の縦横比は AspectRatio プロパティでカスタマイズすることができます。倍率は Magnification プロパティで設定することができます。
 

 
AspectRatio
虫眼鏡範囲の幅と高さ間の割合を示します。
AspectRatio は System.Single 値で、0.50 から 2.00 の範囲の値を取ります。
AspectRatio が変更された場合、虫眼鏡範囲の幅は一致に保たれ、高さの方が変更されます。
AspectRatio が明示的に設定されていない場合、1.50 に等しいと見なされます。
Center
虫眼鏡拡大範囲の中心を示します。
Center は、TPointF 値です。 Center に、X および Y の座標と一緒に TPointF 値を割り当てるか、次のように PointF 関数を使用します:
SmoothMagnifyEffect1.Center := PointF(0, 0);
Center が明示的に設定されていない場合、[150,150] に等しいと見なされます。
InnerRadius
虫眼鏡拡大された円形範囲の内部半径を示します。
InnerRadius は System.Single 値で、0.00 から 1.00 の範囲の値を取ります。
InnerRadius は、虫眼鏡拡大された円形範囲の明確な内部半径を計算するのに使用されます。これは、入力されたイメージのサイズによって変わります。 円形の範囲の半径は、AspectRatio プロパティによって変わります。この領域には、単一の虫眼鏡の係数が適用されます。
InnerRadius が明示的に設定されていない場合、0.2 に等しいと見なされます。
Magnification
虫眼鏡の係数を示します。
Magnification は System.Single 値で、1.00 から 5.00 の範囲の値を取ります。
Magnification が明示的に設定されていない場合、2.00 に等しいと見なされます。
OuterRadius
虫眼鏡拡大された円形範囲の外部半径を示します。
OuterRadius は System.Single 値で、0.00 から 1.00 の範囲の値を取ります。
OuterRadius は、虫眼鏡拡大された円形範囲の明確な外部半径を計算するのに使用されます。これは、入力されたイメージのサイズによって変わります。 円形の範囲の半径は、AspectRatio プロパティによって変わります。 InnerRadiusとOuterRadiusの間の領域で、適用される虫眼鏡の係数は、外部半径から内部半径へと、内部円形領域の虫眼鏡係数に到達するまで、徐々に増加していきます。
OuterRadius が明示的に設定されていない場合、0.4 に等しいと見なされます。
Trigger
トリガ条件を保有するプロパティ。
それぞれのトリガ条件は、プロパティ名、等号記号、トリガ値で構成されます。すべての組み込みトリガはブール値です。したがって、それらの値は True または False でなければなりません。 例:
IsMouseOver=true;IsPressed=false
トリガの値を設定は、 オブジェクト インスペクタで最も簡単に行えます。
トリガ説明
IsDragOverコントロールがドラッグされている(マウス ボタンがクリックされ、かつ押されたままになっている)際に、効果を発生させます。
IsFocusedコントロール上にフォーカスがある際に、効果を発生させます。
IsMouseOver マウスがコントロールの上を通過した際に、効果を発生させます(HitTest が True に設定されている必要があります)。
IsVisibleコントロールが画面上に表示されている際に、効果を発生させます。
その他の組み込みトリガには、以下のものがあります。
・IsActive(TCustomForm)
・IsChecked (TMenuItem)
・IsOpen (TEffect)
・IsPressed (TCustomButton)
・IsSelected(MenuItem、TTabItem、TListBoxItem、TTreeViewItem)
効果トリガに関するさらなる情報については、「FireMonkey の画像効果」の「効果のトリガ」を参照してください。
 
それでは少し試してみます。
ボタン、チェックボックス、ラベル、イメージ(Image)、RoundRect等を配置します。イメージには、BMPファイル、透過付PNGファイルを指定します。背景色が白色だと分かりにくいかもしれないので、Gray色にしておきます。

各コンポーネントにそれぞれ、スムーズ拡大効果(SmoothMagnifyEffect)を指定していきます。これは単純に、構造ビューで、SmoothMagnifyEffectを配置したあとドラッグをして、それぞれの子にしていくだけです。

見た目は変わらないですね。
拡大円の中心点はデフォルトで [150,150]になっている、との事ですから、本来はそれぞれのコンポーネントの中心等を取るのでしょうけれども、取り敢えず、[30,30]にすべく、アプリケーション起動時=フォーム表示時のイベントハンドラを下記のように記述します。
procedure TForm1.FormShow(Sender: TObject);
var
 i : integer ;
 t : TComponent ;
begin
 for i := 1 to 9 do begin
  t := FindComponent('SmoothMagnifyEffect'+IntToStr(i));
  if (t <> nil) then
   TSmoothMagnifyEffect(t).Center := PointF(30,30) ;
 end;
end;
 
トラックバーを操作することにより拡大円の半径を変更させるようにしてみます。トラックバーの変更イベントハンドラを以下のように記述します。トラックバーのMin・Maxには、0、1、を指定しておきます。この値はピクセル(ドット)数ではなく、比率です。
procedure TForm1.TrackBar1Change(Sender: TObject);
var
 i : integer ;
 t : TComponent ;
 v : Single ;
begin
 v := TrackBar1.Value ;
 for i := 1 to 9 do begin
  t := FindComponent('SmoothMagnifyEffect'+IntToStr(i));
  if (t <> nil) then begin
   TSmoothMagnifyEffect(t).OuterRadius := v;
   TSmoothMagnifyEffect(t).InnerRadius := v/2.0;
  end;
 end;
end;
保存・コンパイル・実行を行います。

拡大円の比率「0」状態

大きくしていくと…











 
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
>DelphiXE3
▲2013/11/27
 2013/11/28
▼2013/11/28
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.