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

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

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
DelphiXE3 [FMX] 画像アニメーション(BitmapAnimation)2013/11/09
 
前回は [Animations]内の境界アニメーション(RectAnimation)について見てみました。次は同じく [Animations]内の 画像アニメーション(BitmapAnimation)について見ていきます。
 
[Animations]内
FMX
 
ヘルプより。
オブジェクトの TBitmap 型のプロパティに付加することで、その表示画像を徐々に変化させます。
 
次のいずれかの方法で、親オブジェクト TFmxObject に TBitmapAnimation を付加することができます。
・親オブジェクトを選択し、[ツール パレット]で[TBitmapAnimation]をダブルクリックします。その後、アニメーション化したい親オブジェクトのプロパティの名前を PropertyName に設定します。
・親オブジェクトの[オブジェクト インスペクタ]で、アニメーション化したいプロパティの横のフィルム アイコンをダブルクリックします。これによって PropertyName が割り当てられます。
・TBitmapAnimation のインスタンスを動的に作成し、その親として親オブジェクトを割り当てます。その後、PropertyName を設定します。
 
TColorAnimation(TBitmapAnimation)の StopValue プロパティに、アニメーションで変化させた後の最後のビットマップを割り当てます。Duration プロパティに、アニメーションを継続する秒数を設定します。StartValue に、アニメーションを開始する最初のビットマップを設定します。アニメーションを何度も繰り返す場合には、Loop プロパティを使用します。開始および停止には Start メソッドおよび Stop メソッドを使用します。または TBitmapAnimation の[オブジェクト インスペクタ]で Enabled プロパティを設定すると、実行時に開始されます。AnimationType および Interpolation を設定すると、アニメーションの変化速度を制御することができます。
 

 

 
OnFinish
アニメーションが停止された後に呼び出されるイベント ハンドラです。
 
Start を呼び出すプロシージャが完了してアニメーションが開始された後、Duration の秒数間、継続されます。アニメーションが完了した後に必要な処理を、OnFinish イベント ハンドラ内に配置します。OnFinish は、Loop プロパティが True の場合、Stop メソッドが呼び出されない限り、呼び出されません。
 
OnFinish は、アニメーションの完了を監視し応答するには、適切な場所です。
OnProcess
アニメーションの処理中に呼び出されるイベント ハンドラ。
 
OnProcess は、アニメーションによって制御される値が変更されるたびに、繰り返し呼び出されます。アニメーションが親オブジェクトの見た目を変更させた場合、親オブジェクトは自動的に再描画されます。OnProcess 内での処理が、親の境界ボックスの外側の描画を発生させた場合、そのフォームの Invalidate メソッドを呼び出します。
 
OnProcess は、アニメーション内での変更を監視し応答するには、適切な場所です。OnProcess を、親の OnPaint イベントの代わりに使用します。
 
Sender は、TAnimation およびその親オブジェクトが属するフォームです。
AnimationType
このアニメーションの補間が、アニメーション プロパティに対してどのように適応されるかを設定します。
atIn:開始値から開始
atOut:終了値から開始され、開始値に向けて逆方向に
atInOut:開始値および終了値の両方から開始され、中央の点で接します
AutoReverse
前にアニメーションした後、逆にアニメーションします。
Delay
アニメーションを開始するまで待機する秒数
Duration
開始値から終了値までの、アニメーションする時間(秒数)
Interpolation
アニメーションによって制御されている値が時間の経過と共にどのように変化するのかを設定します。※1
Inverse
前方の代わりに後方へとアニメーションします。
Loop
アニメーションを無制限に繰り返します。
PropertyName
アニメーションするプロパティの名前。
StartFromCurrent
このプロパティのアニメーションを、現在値から開始します。
StartValue
このプロパティのアニメーションを、この値から開始します。
StopValue
このプロパティのアニメーションが、指定の値に到達した際に、停止します。
Trigger
親オブジェクトのプロパティの状態であり、アニメーションを開始するために使用することができます。
TTrigger:
アニメーションの親オブジェクトの状態を示します。
TTrigger は、アニメーションの親の論理型プロパティの状態を示す文字列です。 該当するプロパティには次のものがあります。
IsMouseOver
IsFocused
IsVisible
IsDragOver
IsOpen
TTrigger に割り当てられる文字列は、上記プロパティいずれかの名前の後に "=true" または "=false" を付けたものになります。
TriggerInverse
親オブジェクトのプロパティの状態であり、アニメーションを逆方向に開始するために使用することができます。
 
※1:Interpolationの型(ヘルプより)
itLinear線形補間。このアニメーションが適用されるプロパティ値は、時間と共に一定の割合で変化します。
itQuadratic開始点と終了点の間のパスに 2 次関数が適用されます。パスの傾きは開始点で 0 であり、時間と共に常に増加します。終了点がパス上にくるよう、関数にはスカラが適用されます。
itCubic補間は y = x**3 という形式になります。パスの傾きは開始点で 0 であり、パスを進むにつれて 2 次関数の場合よりもさらに速く増加します。
itQuartic補間は y = x**4 という形式になります。パスの傾きは開始点で 0 であり、パスを進むにつれて 2 次関数の場合よりもさらに速く増加します。
itQuintic補間は y = x**5 という形式になります。 パスの傾きは開始点で 0 であり、パスを進むにつれて 2 次関数の場合よりもさらに速く増加します。
itSinusoidal補間は y = sin(x) という形式になります。 パスの傾きは開始点で 0 であり、サイン曲線の最初の変曲点(x=pi)が終了点になります。
itExponential補間は y = e**xという形式になります。 パスの傾きは開始点で 1 であり、パスを進むにつれて 2 次関数の場合よりもさらに速く増加します。
itCircularこの補間では、開始点と終了点の間のパスは円周の 4 分の 1 です。パスの傾きは開始点で 0 であり、終了点で垂直になります。
itElasticパスは幾何学的補間に合致しません。値(y 座標)は減少して開始値に向かって戻る可能性がありますが、時間(x の値)は常に正の方向に進まなければなりません。
itBackパスは幾何学的補間に合致しません。 値(y 座標)は減少して開始値に向かって戻る可能性がありますが、時間(x の値)は常に正の方向に進まなければなりません。
itBounceパスは跳ねるボールを表します。パスは、開始点と終了点を結ぶ直線から湾曲が離れていく複数の円曲線から構成されます。曲線どうしは尖った点で接続されます。
補間で指定されたパスは、TAnimation と TFloatAnimation のいくつかのプロパティの影響を受ける可能性があります。上記の説明は次の条件でのものです:
・StartFromCurrent = True
・AnimationType = atIn
AnimationType を atOut に設定すると、上の説明で開始点について述べたことがすべて、終了点に適用されます。これらのアニメーション プロパティの効果については、各プロパティのドキュメントを参照してください。
 
というわけで、試してみます。
フォーム Form1 上に[Standard]のイメージコントロール(ImageControl)とボタン(Button)を配置し、イメージコントロールの中(下)に画像アニメーションを配置します。

 
PropertyNameプロパティを、右端[▼]ボタンをクリックして選択出来る「Bitmap」にします。
この親オブジェクト=イメージコントロール ImageControl1 の Bitmapプロパティ、という事ですね。
 
StartValue値には Windows7のサンプルピクチャ内にある「菊.jpg」を、
StopValue値には Windows7のサンプルピクチャ内にある「砂漠.jpg」を指定します。
 
Duration値を大きくすれば、もっとゆっくりアニメーションされます。

 

 
 
次に、画像アニメーションを自由に開始出来るように、ボタンをクリックしたらアニメーション開始することにします。
procedure TForm1.Button1Click(Sender: TObject);
begin
 BitmapAnimation1.Enabled := True ;
end;
「BitmapAnimation1.Start ;」でも構いません。
 
保存・コンパイル(ビルド)・実行を行います。

ボタンをクリック


最初は「菊.jpg」が開いた状態です


徐々に次の画像へ移っていきます


次の画像「砂漠.jpg」が開かれました
 
1回で終了しますが、何度も繰り返したい場合は、Loopプロパティを「True」にすれば良いでしょう。AutoReverseプロパティを「True」にすると、終了値→開始値のアニメーションが行われます。
 
ループを止めたい場合は、
  BitmapAnimation1.Enabled := False ;
又は
  BitmapAnimation1.Stop ;
で良いようです。
 
例えば、画像のスライドショウなアプリケーションを作成するような場合には、画像切り替えを行う際、このコンポーネントで StartValue値、StopValue値を次々に変更していくようにするとスムーズな表現が可能になる、かもしれません。
 
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
>DelphiXE3
▲2013/11/08
 2013/11/09
▼2013/11/10
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.