文章来源:GIF充当动态图片
已试过,可以用
//获取GIF路径
string gifPath = @"E:/Project/VSProject/MySQL/Dynamic_Form/img/background_3.gif";
/// <summary>
/// 设置GIF为背景图
/// </summary>
/// <param name="gifPath"></param>
private void SetGifBackground(string gifPath)
{
Image gif = Image.FromFile(gifPath);
//MessageBox.Show(gif);
System.Drawing.Imaging.FrameDimension fd = new System.Drawing.Imaging.FrameDimension(gif.FrameDimensionsList[0]);
int count = gif.GetFrameCount(fd); //获取帧数(gif图片可能包含多帧,其它格式图片一般仅一帧)
System.Windows.Forms.Timer giftimer = new System.Windows.Forms.Timer();
giftimer.Interval = 90;
int i = 0;
Image bgImg = null;
giftimer.Tick += (s, e) =>
{
if (i >= count) { i = 0; }
gif.SelectActiveFrame(fd, i);
System.IO.Stream stream = new System.IO.MemoryStream();
gif.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
if (bgImg != null) { bgImg.Dispose(); }
bgImg = Image.FromStream(stream);
this.BackgroundImage = bgImg;
i++;
};
this.SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true);
giftimer.Start();
}
//调用SetGifBackground()方法
public 窗体名()
{
InitializeComponent();
SetGifBackground(gifPath);
}
其中 giftimer.Interval = 90;代表GIF每0.09s刷新一遍。
根据GIF的时间长短对刷新时间做出一定的改变。