步驟:
一 新建一個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"