在C#中加载动态GIF图像需要多长时间?

3

如何在表单中展示一个动画图片,并控制它的大小和持续时间?

我尝试了以下代码:

private void AnimImage()
{
    PicBox.Enabled = true;
    PicBox.Visible = true;                
    System.Threading.Thread.Sleep(5000);
    PicBox.Visible = false;
    PicBox.Enabled = false;
}

不知道是否有更好的方法,但你可以使用模态对话框和更新面板来实现。或者只需使用jQuery和Ajax调用... 有许多种方式可以获得所需的结果。 - Gonzix
2
只需使用PictureBox。如果您不想再查看它,请将其Visible属性设置为false。 - Hans Passant
为了显示动画图像,您可以使用此控制器。 http://www.codeproject.com/Tips/1004624/Gif-viewer-Snipper-control - xwpedram
3个回答

8
要在您的窗体上显示动画图像,请按照以下步骤进行:
1. 在窗体上拖放一个PictureBox。 2. 在设计器的属性窗口中更改image属性,使其包含指向您图像的路径。 3. 根据需要调整大小。
完成后,尝试运行项目,如果没有抛出异常,您将在PictureBox中看到您的图像动画效果。
在项目执行过程中,如果您想更改图像,请使用下面的语句。
pictureBox1.Load("Path to a new image");//Assuming you haven't renamed the PictureBox.

此外,如果您想手动完成此操作,请跟随以下步骤;
private void DisplayImage()
{
    PictureBox pictureBox1=new PictureBox();
    pictureBox1.Location=new Point(Use appropriate values to place the control);
    this.Controls.Add(pictureBox1);
    pictureBox1.Load("Path to a image to display");
}

当您不希望显示PictureBox时,可以像其他用户建议的那样将其Visible属性设置为false,以此方式实现;
pictureBox1.Visible=false;

要将其恢复,请使用以下代码:

pictureBox1.Visible=true;

更新:

要仅显示图像5秒钟,请执行以下操作:

在您的窗体上添加一个计时器。

将其间隔属性设置为5000毫秒。

创建其Tick事件的新事件(在事件窗口中找到Tick事件并双击它)。

接下来修改DisplayImage(),使其看起来像:

private void DisplayImage()
{
    timer1.Start();
    PictureBox pictureBox1=new PictureBox();
    pictureBox1.Location=new Point(Use appropriate values to place the control);
    this.Controls.Add(pictureBox1);
    pictureBox1.Load("Path to a image to display");
}

下一步,定义一个整型字段(在所有函数的外部),名为count,如下所示;
private int count=0;

现在修改timer1_Tick()事件,使其如下所示;
private void timer1_Tick(object sender, EventArgs e)
{
    count++;
    if (count == 5)
    {
        SourcePictureBox.Image = null;
        count = 0;
    }
}

那应该可以解决问题了。如果还有其他需要,请告诉我。

这个没问题,但我无法控制图像显示的时间。 - mafap
@mafap,你所说的“控制图像显示时间”是什么意思? - devavx
显示图像5秒钟,例如。 - mafap
当您需要从PictureBox中删除图像时,请将其Image属性设置为null,就像这样:SourceImageBox.Image=null。进一步地,如果您想要停止指导线,请在MouseMove_EventOnPaint_Event中用if-else语句包围代码,当您想要隐藏它们时请提供false,并且要获取它们时请提供true。如果您需要这段代码,请告诉我,我会尝试为您获取它。 - devavx
看起来是个不错的解决方案,我在考虑鼠标移动时将图像属性设置为false。你能给我一些代码吗? - mafap
@mafap 我已经更新了答案,请再次提问如果有任何问题,如果它对你有帮助,请将其标记为接受的答案。 - devavx

1
在窗体中添加一个图片框,并将.gif图像添加到图片框中。在加载窗体时,使图片框可见。
请确保在加载时启用图片框,否则在Windows窗体中不会有任何图像动画。

0

打开你的表单,在解决方案资源管理器中打开你的项目名称,打开属性并右键单击资源以添加它们。拖动你的 .Gif 图像并将其设置为启用状态,然后保存。

添加一个 pictureBox 并将图像设置为你的 Gif(不是背景图像,否则它将无法工作)。不要停靠,否则计时器会重置,所以 Gif 将循环播放。

添加一个计时器,将其设置为 5000(5 秒)并启用它。

双击你的图片框并输入

pictureBox1.Visible = false;  (assuming you have not renamed your picturebox) (NOTE this is a back up encase the timer fails)

返回您的表单并双击计时器,然后添加 pictureBox1.Visible = false; timer1.Stop();(防止启动时钟)

一旦时间到了,您的图像现在应该关闭(如果没有,请单击它)

如果您需要在按钮单击时启动Gif 在具有initialize编写的private void中 添加 pictureBox1.Visible = false;

现在添加您的按钮,并将以下代码编写为button1_click

pictureBox1.Visible = true; Timer1.Start(); (这是用于在单击按钮时启动计时器的代码) 输入代码

如果这导致循环错误,即gif不隐藏,请在picturebox_click中放置timer.Stop();


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接