在PictureBox上顯示gif動態圖(winform)

步驟:

一  新建一個winform項目,並拖入一個PictureBox控件和Button控件,佈局如下圖:

二   編寫代碼如下(程序中使用到的gif圖片我會在文章後面貼出,你另存到一個test文件夾內,接着把test文件夾拷貝到工程的bin/Debug目錄下)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 加載Gif圖片
{
    public partial class Form1 : Form
    {
        //多個gif圖片的路徑集合
        string[] PathArray = { "test/1注意基準線.gif", "test/2.gif", "test/3操作子控件提示文本.gif", "test/4改變子控件的高度和位置.gif", "test/5 隱藏和顯示提示文本.gif", "test/效果圖.gif" };
        //用來標識每點擊一次按鈕,就切換一次gif圖片的路徑
        int count = 0;
        MemoryStream ms;
        public Form1()
        {
            InitializeComponent();
            
            
        }


        /// <summary>
        /// 從指定的路徑讀取gif圖片並轉成Image
        /// </summary>
        /// <param name="GifFilePath">gif圖片的路徑</param>
        /// <returns>轉換後的Image</returns>
        private Image ConvertGifFileToImage(string GifFilePath)
        {

            //下面的操作從文件讀取到fs流後還要轉成ms流呢?因爲如果fs流不關閉,下次再讀同名的gif文件時就會拋異常
            FileStream fs = new FileStream(GifFilePath, FileMode.Open);
            byte[] byteArray = new byte[fs.Length];
            int result = fs.Read(byteArray, 0, byteArray.Length);
            fs.Seek(0, SeekOrigin.Begin);
            ms= new MemoryStream(byteArray);
          
            Image img = Image.FromStream(ms);

            fs.Dispose();
            fs.Close();
            return img;
        }


        /// <summary>
        /// 加載按鈕點擊事件,每點擊一次就切換一張gif圖片
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnLoad_Click(object sender, EventArgs e)
        {
            if (ms != null)
            {
                ms.Dispose();
                ms.Close();
            }
            count = count % 6;
            //從指定的路徑讀取gif圖片並轉成Image,    爲了簡單起見,這裏的異常就不抓了
            Image img = ConvertGifFileToImage(PathArray[count]);
            count++;
            this.pictureBox1.Image = img;
        }
    }
}

 

三  運行效果圖如下:

 

 

用到的gif圖片如下:

圖1 :    "1注意基準線.gif"

 

圖2 :  "2.gif"

 

圖3: "3操作子控件提示文本.gif"

 

圖4:  "4改變子控件的高度和位置.gif"

 

圖5:  "5 隱藏和顯示提示文本.gif"

 

圖6 :  "效果圖.gif"

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章