所以我有一個用C#4.0編寫的Winforms應用程序中的自定義Button類。該按鈕通常會保存靜態圖像,但是當發生刷新操作時,它會切換爲動畫AJAX樣式的按鈕。爲了動畫化圖像,我設置了一個計時器,它可以在每個時間點上推進圖像動畫,並將其設置爲按鈕圖像。這是我能夠實現它的唯一方法。我擁有的解決方案並不那麼高效。任何意見將是有益的。在winforms按鈕中切換動畫圖像和靜態圖像
所以有兩個問題: 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--;
}
}
如何將圖像幀加載到列表中?我認爲這將解決我會遇到的任何主要表現問題。感謝您的回答。 –
我已更新我的回答 –
甜。當然,現在看起來真的很明顯。謝謝你的幫助。 –