AnimatedImageManager.SuspendAnimation(this.imageInstance);
このトピックは、Ultimate UI for Windows Forms コントロールのアニメーション GIF サポートについて説明します。
このトピックを理解するために、以下のトピックを参照することをお勧めします。
このトピックは、以下のセクションで構成されます。
既存の静的画像サポートの他、Infragistics のプレゼンテーション層フレームワーク (PLF) はすべてのコンポーネントでアニメーション画像の表示をサポートします。時間ベースのフレームを含む画像の表示を自動的に処理する、新たな AnimatedImageManager クラスをフレームワークに追加しました。
AnimatedImageManager は、Presentation Layer Framework 内のアニメーション画像を管理する静的マネージャーです。マネージャーの主要機能は、特定の画像インスタンスでアニメーションを一時停止し再開する機能を公開する際に、すべてのアニメーション画像をインフラジスティックスのコンポーネント内でトラッキングし続ける機能です。
SuspendAnimation() メソッドは、アニメーションがすべての登録画像または特定の画像のインスタンスで中止される際に使用されます。一時停止されると、画像は現在のフレームのみを使用して描画されます。
以下のコード スニペットは、単一画像インスタンスのアニメーションを一時停止する方法を示します。
C# の場合:
AnimatedImageManager.SuspendAnimation(this.imageInstance);
Visual Basic の場合:
AnimatedImageManager.SuspendAnimation(Me.imageInstance)
アニメーションを一時停止した後に、現在のフレームを開始するすべての停止画像でアニメーションを再開するために ResumeAnimation() メソッドを使用できます。
以下のコード スニペットは、単一画像インスタンスのアニメーションを再開する方法を示します。
C# の場合:
AnimatedImageManager.ResumeAnimation(this.imageInstance);
Visual Basic の場合:
AnimatedImageManager.ResumeAnimation(Me.imageInstance)
アニメーション画像の現在のフレームを変更する際に、AnimatedImageManager は ImageFrameChanged イベントを発生し、フレーム変更のすべてのリスナーに通知します。このイベントの ImageFrameChangedEventArgs は、画像、現在のフレームのインデックス、および画像の時間に基づいたフレームの合計数を公開します。イベント ハンドラー内で停止される画像でアニメーションを許可する SuspendAnimation プロパティを公開します。
C# の場合:
// ImageFrameChanged イベントにサブスクライブします (現在フォームの Load イベント ハンドラーの中) AnimatedImageManager.ImageFrameChanged += AnimatedImageManager_ImageFrameChanged; // ImageFrameChanged イベント ハンドラー void AnimatedImageManager_ImageFrameChanged(object sender, AnimatedImageManager.ImageFrameChangedEventArgs e) { // これは画像の最後のフレームで画像が UltraButton の画像の場合、 // アニメーションを中止します (または、画像を Appearance から割り当て解除します) if (e.IsLastFrame && e.Image == this.ultraButton1.Appearance.Image) { e.SuspendAnimation = true; } }
Visual Basic の場合:
' ImageFrameChanged イベントにサブスクライブします (現在フォームの Load イベント ハンドラーの中) AddHandler AnimatedImageManager.ImageFrameChanged, AddressOf AnimatedImageManager_ImageFrameChanged ' ImageFrameChanged イベント ハンドラー Private Sub AnimatedImageManager_ImageFrameChanged(sender As Object, e As AnimatedImageManager.ImageFrameChangedEventArgs) ' これは画像の最後のフレームで画像が UltraButton の画像の場合、 ' アニメーションを中止します (または、画像を Appearance から割り当て解除します) If e.IsLastFrame AndAlso e.Image Is Me.UltraButton1.Appearance.Image Then e.SuspendAnimation = True End If End Sub
画像アニメーションがインフラジスティックス フレームワーク以外で実装されている場合などでは、画像アニメーションを PLF 内でオフにする必要があります。AnimatedImageManager が有効なプロパティで行うことができます。
C# の場合:
AnimatedImageManager.Enabled = false;
Visual Basic の場合:
AnimatedImageManager.Enabled = false
Window Forms のデザインにより、画像のフレームを変更するときは画像が描画されるコントロールの一部を無効にする必要があります。そのため、同時に多数のアニメーション画像を使用する場合に、結果として CPU の使用が増加します。
AnimatedImageManager は、画像がインフラジスティックスコントロールによって使用されているかどうかに関係なく、画像のアニメーションがいつ一時停止したかをトラッキングします。これにより、画像の初期レンダリングの前にアニメーションを停止することを許可します。ただし、現在停止している画像はコントロールによって使用されないため、画像のアニメーションを再開することを推奨します。それにより、AnimatedImageManager が画像をトラックする必要がなくなり、画像をメモリからリリースします。
このトピックの追加情報については、以下のトピックも合わせてご参照ください。