C#4.0で書かれたWinformsアプリケーションにカスタムButtonクラスがあります。ボタンは静的な画像を通常保持しますが、リフレッシュ操作が行われると、アニメーション化されたAJAXスタイルのボタンに切り替わります。画像をアニメートするために、タイマーを設定して、毎回ティックごとに画像アニメーションを進め、それをボタン画像として設定します。それが私にそれを働かせる唯一の方法です。私が持っている解決法は効率的ではありません。アドバイスが参考になります。winformsボタンでアニメーション画像と静止画像を切り替える
2つの質問 1.簡単な方法がありますか?私は使用するべき機能を見落としていますか? 2.画像を手動でアニメーションするより良い方法はありますか?
以下のコードは、私が各ティックで何をしているのかを見つけます。改善の最初の領域:多分イメージの各フレームをリストにコピーしますか? _image.Dispose()に注意してください。ローカルImageを破棄してメモリリークを引き起こしていました。
こちらのアドバイスをいただきありがとうございます。効率的なソリューションがあれば、私は何かをオンラインで投稿してリンクします。
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--;
}
}
イメージフレームをリストに読み込む方法を教えてください。私は、それが私が持っている主要なパフォーマンスの問題を解決するだろうと思う。ご回答有難うございます。 –
私の答えは –
Sweetです。もちろん、今は本当に明らかにそうです。ご協力いただきありがとうございます。 –