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

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

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

 

 
OnFinish
アニメーションが停止された後に呼び出されるイベント ハンドラです。
 
Start を呼び出すプロシージャが完了してアニメーションが開始された後、Duration の秒数間、継続されます。アニメーションが完了した後に必要な処理を、OnFinish イベント ハンドラ内に配置します。OnFinish は、Loop プロパティが True の場合、Stop メソッドが呼び出されない限り、呼び出されません。
 
OnFinish は、アニメーションの完了を監視し応答するには、適切な場所です。
OnProcess
アニメーションの処理中に呼び出されるイベント ハンドラ。
 
OnProcess は、アニメーションによって制御される値が変更されるたびに、繰り返し呼び出されます。アニメーションが親オブジェクトの見た目を変更させた場合、親オブジェクトは自動的に再描画されます。OnProcess 内での処理が、親の境界ボックスの外側の描画を発生させた場合、そのフォームの Invalidate メソッドを呼び出します。
 
OnProcess は、アニメーション内での変更を監視し応答するには、適切な場所です。OnProcess を、親の OnPaint イベントの代わりに使用します。
 
Sender は、TAnimation およびその親オブジェクトが属するフォームです。
AnimationBitmap
アニメーションされるbitmap イメージを示します。
AnimationBitmap プロパティは、bitmap イメージを FMX.Ani.TBitmapListAnimation.
AnimationCount 個分の異なる状態で指定します。これは指定された Duration および Delay で、連続してアニメーションされます。
AnimationCount
アニメーションのフレーム数を示します。
AnimationCount プロパティは、AnimationBitmap プロパティで指定されたビットマップ イメージに保有されている、複数の状態の数と全く同じ、アニメーションのフレーム数を示します。
AnimationType
このアニメーションの補間が、アニメーション プロパティに対してどのように適応されるかを設定します。
atIn:開始値から開始
atOut:終了値から開始され、開始値に向けて逆方向に
atInOut:開始値および終了値の両方から開始され、中央の点で接します
AutoReverse
前にアニメーションした後、逆にアニメーションします。
Delay
アニメーションを開始するまで待機する秒数
Duration
開始値から終了値までの、アニメーションする時間(秒数)
Interpolation
アニメーションによって制御されている値が時間の経過と共にどのように変化するのかを設定します。※1
Inverse
前方の代わりに後方へとアニメーションします。
Loop
アニメーションを無制限に繰り返します。
PropertyName
アニメーションするプロパティの名前。
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プロパティ、という事ですね。
 
AnimationBitmapプロパティ値には、Windows7のサンプルピクチャ内にある「菊.jpg」を指定します。
 
AnimationCount値を「4」にしてみます。
 
アニメーションが速すぎるので、Duration値を「1」にします。

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

ボタンをクリック








 
となり、1つの画像ファイルを横に4分割して、4回にわけて画像表示を行なっていく様子です。AnimationRowCount値を「4」にすると、縦4分割となります。また、AnimationRowCount値を「2」にすると、横2分割・縦2分割となります。以下、「2」を指定した場合です。







 
1回で終了しますが、何度も繰り返したい場合は、Loopプロパティを「True」にすれば良いでしょう。AutoReverseプロパティを「True」にすると、終了値→開始値のアニメーションが行われます。
 
アニメGIFや、マルチページTIFF、という事では無いようです。
また、VCLのImageListのように、複数の画像ファイルを指定しておく、という事でもなさそうです。
 
このコンポーネントでパラパラ漫画を作成する場合は、画像ソフト等を利用して、同じサイズの複数の画像を横→縦に連結しておいて1つの巨大な画像ファイルを作成し、その縦数を AnimationRowCountプロパティに指定しておく、という事になりそうです。ですので、小さい画像であったり、枚数が少ない場合には利用出来るかもしれませんが、大きくなり過ぎる場合には、ちょっと利用出来なさそうです。
 
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
>DelphiXE3
▲2013/11/09
 2013/11/10
▼2013/11/11
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.