我创建了两个动画 GIF。我想将它们并排添加到一个新的位图中,这样我就会看到两个动画 gif 动画。不是静止图像,而是两个并排的动画。
这段代码在 form1 的顶部,我现在正在使用:
public static class BitmapExtensions
{
public static Bitmap DoubleBitmap(this Bitmap bm)
{
Bitmap bitmap = new Bitmap(bm.Width * 2, bm.Height);
using (Graphics g = Graphics.FromImage(bitmap))
{
g.DrawImage(bm, Point.Empty);
g.DrawImage(bm, new Point(bm.Width, 0));
return bitmap;
}
}
public static Bitmap AppendBitmap(this Bitmap bm, Bitmap rightBitmap)
{
Bitmap bitmap = new Bitmap(bm.Width + rightBitmap.Width, Math.Max(bm.Height, rightBitmap.Height));
using (Graphics g = Graphics.FromImage(bitmap))
{
g.DrawImage(bm, Point.Empty);
g.DrawImage(rightBitmap, new Point(bm.Width, 0));
return bitmap;
}
}
}
然后我像这样使用它:
private void CreateNewImage(string DirOfUrls)
{
List<string> files = Directory.GetFiles(DirOfUrls, "RainImage*.*").ToList();
List<string> files1 = Directory.GetFiles(DirOfUrls, "SatelliteImage*.*").ToList();
Bitmap bmp = new Bitmap(@"d:\localpath\RainMapGif");//files1[i]);
Bitmap bmp1 = new Bitmap(@"d:\localpath\SatelliteMapGif");//files[i]);
//Use it
//Double the same image
Bitmap doubledBitmap = bmp1.DoubleBitmap();
//Append new image
Bitmap appendedBitmap = bmp1.AppendBitmap(bmp);
appendedBitmap.Save(@"d:\localpath\newbitmapGif", System.Drawing.Imaging.ImageFormat.Gif);
}
RainMapGif 和 SatelliteMapGif 是动画 gif。但是当我尝试这样做时,我得到一个带有两个静止图像的新位图,而不是两个动画 gif 的两个动画。
如何将两个动画 gif 添加到一个位图中,例如,当我在 Internet Explorer 上打开位图时,我会看到两个动画并排移动?
编辑**
这就是我之前使用它的方式:
private void CreateNewImage(string DirOfUrls)
{
int newImageCounter = 0;
List<string> files = Directory.GetFiles(DirOfUrls, "RainImage*.*").ToList();
List<string> files1 = Directory.GetFiles(DirOfUrls, "SatelliteImage*.*").ToList();
for (int i = 0; i < files.Count; i++)
{
if (newImageCounter == 9)
{
CreateNewGif(DirOfUrls);
//break;
}
Bitmap bmp = new Bitmap(files1[i]);
Bitmap bmp1 = new Bitmap(files[i]);
//Use it
//Double the same image
Bitmap doubledBitmap = bmp1.DoubleBitmap();
//Append new image
Bitmap appendedBitmap = bmp1.AppendBitmap(bmp);
appendedBitmap.Save(@"d:\localpath\newbitmap" + newImageCounter.ToString("D6"), System.Drawing.Imaging.ImageFormat.Gif);
newImageCounter++;
}
所以我有 9 幅图像,它们都是 RainMap 图像和 SatelliteMap 图像。其余的 SatelliteMap 图像都是单张的。
然后我使用 CreateNewGif:
private void CreateNewGif(string urlsdirs)
{
List<string> files = Directory.GetFiles(urlsdirs, "RainImage*.*").ToList();
List<string> files1 = Directory.GetFiles(urlsdirs, "SatelliteImage*.*").ToList();
List<string> test = files;
test.RemoveRange(0, files1.Count);
List<string> newbitmap = Directory.GetFiles(localdir, "newbitmap*.*").ToList();
for (int i = 0; i < test.Count; i++)
{
newbitmap.Add(test[i]);
}
uf.MakeGIF(newbitmap, localdir + "newbitmapGif", 50, true);
}
并制作新的动画 gif:
uf.MakeGIF(newbitmap, localdir + "newbitmapGif", 50, true);
但是新的 gif 动画并不好,因为雨图像在卫星图像之前结束,所以新的 gif 动画同时显示动画,9 帧后只有一个是继续的。
我怎样才能使具有 9 幅图像的那一张将一遍又一遍地继续动画,而第二张将一直保持动画直到结束?
这是 veljkoz 之前写过的问题。一个动画计数比另一个短。但是我该如何解决呢?