淺析C#調(diào)用ImageAnimator
最近在做一個(gè)圖片查看器,由于使用一般的PctureBox,在性能和縮放控制上都無(wú)法滿足預(yù)期的要求,因此所有組件的呈現(xiàn)均是通過(guò)重寫控件的 OnPaint事件來(lái)繪制。在查看gif圖片時(shí)發(fā)現(xiàn)Graphics.DrawImage只呈現(xiàn)第一幀,無(wú)法滿足預(yù)期要求,因此經(jīng)過(guò)摸索尋找到了解決自繪 gif的較好辦法。
這里介紹一個(gè).net自身攜帶的類ImageAnimator,這個(gè)類類似于控制動(dòng)畫的時(shí)間軸,C#調(diào)用ImageAnimator.CanAnimate可以判斷一個(gè)圖片是否為動(dòng)畫,C#調(diào)用ImageAnimator.Animate可以開(kāi)始播放動(dòng)畫,即每經(jīng)過(guò)一幀的時(shí)間觸發(fā)一次OnFrameChanged委托,我們只要在該委托中將Image的活動(dòng)幀選至下一幀再迫使界面重繪就可以實(shí)現(xiàn)動(dòng)畫效果了。
為了方便以后的使用,我將這些代碼整合到了一起,形成一個(gè)AnimateImage類,該類提供了CanAnimate、FrameCount、CurrentFrame等屬性,以及Play()、Stop()、Reset()等動(dòng)畫常用的方法,代碼如下
- usingSystem;
- usingSystem.Collections.Generic;
- usingSystem.Text;
- usingSystem.Drawing;
- usingSystem.Drawing.Imaging;
- namespaceGifTest
- {
- /**////
- ///表示一類帶動(dòng)畫功能的圖像。
- ///
- publicclassAnimateImage
以上介紹C#調(diào)用ImageAnimator類。
【編輯推薦】


















