有没有办法在Winforms中显示GIF而不将它们保存在系统上?

问题描述 投票:0回答:1

我目前正在创建一个程序,它接受输入 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 保存在磁盘上。

c# winforms imagemagick
1个回答
0
投票

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

displayPicturebox.Image = bitmap;
© www.soinside.com 2019 - 2024. All rights reserved.