そのため、C#4.0で記述されたWinformsアプリにカスタムButtonクラスがあります。ボタンは通常は静止画像を保持しますが、更新操作が行われると、アニメーション化されたAJAXスタイルのボタンに切り替わります。画像をアニメーション化するために、目盛りごとに画像アニメーションを進め、それをボタン画像として設定するタイマーを設定しています。それが私がそれを機能させることができる唯一の方法です。私が持っている解決策はそれほど効率的ではありません。どんなアドバイスも役に立ちます。
したがって、2つの質問があります。1。使用する必要のある機能を見落としているような、より簡単な方法はありますか?2.画像を手動でアニメーション化するためのより良い方法はありますか?
私が各ティックで行っていることの以下のコードを見つけてください。改善の最初の領域:画像の各フレームをリストにコピーしますか?_image.Dispose();に注意してください。ローカルイメージの破棄に失敗すると、メモリリークが発生していました。
ここでアドバイスをありがとう。効率的な解決策ができたら、オンラインで何かを投稿してリンクします。
private void TickImage()
{
if (!_stop)
{
_ticks++;
this.SuspendLayout();
Image = null;
if(_image != null)
_image.Dispose();
//Get the animated image from resources and the info
//required to grab a frame
_image = Resources.Progress16;
var dimension = new FrameDimension(_image.FrameDimensionsList[0]);
int frameCount = _image.GetFrameCount(dimension);
//Reset to zero if we're at the end of the image frames
if (_activeFrame >= frameCount)
{
_activeFrame = 0;
}
//Select the frame of the animated image we want to show
_image.SelectActiveFrame(dimension, _activeFrame);
//Assign our frame to the Image property of the button
Image = _image;
this.ResumeLayout();
_activeFrame++;
_ticks--;
}
}