WinForm上顯示gif動畫:轉

來源:互聯網
上載者:User

標籤:

WinForm上的ProgressBar,老實說,實在是不敢恭維,太死板,太難看了,即使做成即時顯示處理進度的,它還是逃離不了“難看”。現 在的web2.0上到處都能看到一個顯示正在處理的小圓圈在那轉啊轉,以表示正在處理,雖然它不是即時的,只是個gif動畫,但它的效果總感覺要比 winform上的progressBar要賞心悅目的多。那我在winform 上是否也可以用這種gif動畫來顯示處理進度呢?答案是顯然的,肯定可以,聽說pictureBox就可以顯示gif動畫,只要把該控制項的image屬性 設定成我們所指的gif動畫就可以了,編譯,運行,噢,gif動畫罷工了,它根本就沒有動起來,只是停留在某一幀。看來這種走捷徑的方式在IT民工業是行 不通的。

      那我們還是用ImageAnimator.Animate()方法吧,發現語言群組織不起來,還是用直接看代碼來的快,越來越覺得自己可悲了。。。。話都說不清楚。。。

//首先定義私人變數 private Image m_img=null;private EventHandler evtHandler=null;//重載的當前winform的OnPaint方法,當介面被重繪時去顯示當前gif顯示某一幀protected override void OnPaint(PaintEventArgs e){    base.OnPaint(e);    if (m_Image != null)    {        //獲得當前gif動畫下一步要渲染的幀。        UpdateImage();        //將獲得的當前gif動畫需要渲染的幀顯示在介面上的某個位置。        e.Graphics.DrawImage(m_Image, new Rectangle(145, 140, m_Image.Width, m_Image.Height));    }}//實現Load方法private Load(object sender,EventArgs e){    //為委託關聯一個處理方法    evtHandler=new EventHandler(OnImageAnimate);    //擷取要載入的gif動畫檔案    m_img=Image.FromFile(Application.StartupPath+"\\loading.gif");    //調用開始動畫方法    BeginAnimate();}//開始動畫方法private void BeginAnimate(){    if(m_img!=null)    {        //當gif動畫每隔一定時間後,都會變換一幀,那麼就會觸發一事件,該方法就是將當前image每變換一幀時,都會調用當前這個委託所關聯的方法。        ImageAnimator.Animate(m_img,evtHandler);    }}//委託所關聯的方法private void OnImageAnimate(Object sender, EventArgs e){    //該方法中,只是使得當前這個winfor重繪,然後去調用該winform的OnPaint()方法進行重繪)    this.Invalidate();}//獲得當前gif動畫的下一步需要渲染的幀,當下一步任何對當前gif動畫的操作都是對該幀進行操作)private void UpdateImage(){    ImageAnimator.UpdateFrames(m_Image);}//關閉顯示動畫,該方法可以在winform關閉時,或者某個按鈕的觸發事件中進行調用,以停止渲染當前gif動畫。private void StopAnimate(){    m_Image = null;    ImageAnimator.StopAnimate(m_Image,evtHandler);}
終於可以看到gif動畫了,如果動畫左側或者上沿再標上一段文字"loading....",這不是和web2,0的效果一樣的了麼,但是實現起來卻複雜的許多。。。

 

WinForm上顯示gif動畫:轉

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.