有没有一种方法可以在Winforms中显示GIF,而不需要将它们保存在系统上?

ipakzgxi  于 2023-10-23  发布在  其他
关注(0)|答案(1)|浏览(104)

我目前正在创建一个程序,它接受一个输入GIF,在其上放置文本,并使用ImageMagick库将其输出为一个新的GIF。我的程序是完美的操作时,输出的GIF是保存在计算机上的某个地方,然后显示在一个PictureBox通过抓取它从该目录,但有没有一种方法,跳过写入到磁盘,而是直接放置在输出GIF后,它是编程创建的PictureBox?
我开始尝试让displayPicturebox直接显示ImageMagick collection变量(理论上是我已经组装好的GIF),但它不允许我隐式地从MagickImageCollection转换为System.Drawing.Image。
接下来,我尝试将所有处理过的帧放入GIF格式的内存流中,并将内存流转换为位图,以便displayPicturebox接受,但这只显示第一帧的静态图像,其他什么都没有。

// Assume 'collection' is a collection of 10 frames to be turned into a GIF.
MagickImageCollection collection = new MagickImageCollection();

var memStream = new MemoryStream();

// Writes all frames onto memStream in GIF format...?
collection.Write(memStream, MagickFormat.Gif);

memStream.Position = 0;

var bitmap = Image.FromStream(memStream);

displayPicturebox.Image = new Bitmap(bitmap);

我读到过位图可以被动画化,所以我想知道是否有一种方法可以让它工作,或者如果GIF必须先保存在磁盘上。

wr98u20j

wr98u20j1#

看起来你只需要将位图分配给PictureBox,试试这个:

displayPicturebox.Image = bitmap;

相关问题