GIF Animation not working in Windows Form

隐身守侯 提交于 2019-12-04 07:10:25

Make sure you have your image in the image property NOT THE BACKGROUND IMAGE PROPERTY. That's the mistake I made

Niranjan Singh

It is working fine for me. I have just dragged a new pictureBox on form and setting image property at Form_Load() event and showing GIF animated.

I did same as you on button click:

  TestForms.NavBarTest newForm = new TestForms.NavBarTest();
            newForm.Show();

At my Test Form:

private void NavBarTest_Load(object sender, EventArgs e)
        {
            pictureBox1.Image = NavronChartControl.Properties.Resources.url;
        }

Note: If your picture box is disabled then it will not animate the Gif

Reference:
How do you show animated GIFs on a Windows Form (c#)
Animated Progress Indicator in C# (Windows Forms)

Try to implement using this link:Animated GIF in picturebox won't animate apprach.

aWebdesigner09

Solved

My current Thread is busy to Play GIF Animation.

I tried So many ways like Application.DoEvents(); etc. But every thing can't helped me.

The answer in the following Question, which uses Threading is a very great working idea.

StackOverFlow: Show/Hide Splash Screen

Thanks for every one.

user1932199

The best way to achieve it is to run the animation in an async task, but accordingly, some limitations are possible to do that on windows form using:

System.Threading.Thread.Sleep(int milliseconds).

My splash view is displayed with a gif (loading)

e.g.: In your constructor,

public partial class MainMenu : Form
{

    private SplashScreen splash = new SplashScreen();

    public MainMenu ()
    {
        InitializeComponent();

        Task.Factory.StartNew(() => {
            splash.ShowDialog();
        });

       Thread.Sleep(2000);
   }

It is imperative to put the Thread.Sleep(int) after starting a new one, don't forget that every action you did on this thread needs to be invoked, for example:

    void CloseSplash()
    {
        Invoke(new MethodInvoker(() =>
        {
           splash.Close();
        }));
    }

Now your gif should work!

MDMalik

This question has already raised before. Though the approach is different but the questions concept is the same

StackOverFlow: How do you show animated GIFs on a Windows Form (c#)

Source project where you can use Code Project

I guess that will help you out

If none of the previous answers work for you, another idea is to refresh the image tag or write it on the fly with jQuery.
In my case I needed to show an animated GIF when a button on the form was clicked. Previously it would show up but not animate. I just added a jQuery event when the button was clicked that added the image tag on-the-fly to a div through the parent tag's html() function.

$('.showhidegif').html("<img src='/Content/img/angled-spinner.gif' />");

<div class="col-sm-12 showhidegif"></div>

Worth a shot especially if you're already using jquery on your page.

I had the same issue and came across different solutions by implementing which I used to face several different issues. Finally, below is what I put some pieces from different posts together which worked for me as expected.

    private void btnCompare_Click(object sender, EventArgs e)
    {
        ThreadStart threadStart = new ThreadStart(Execution);
        Thread thread = new Thread(threadStart);
        thread.SetApartmentState(ApartmentState.STA);
        thread.Start();
    }

Here is the Execution method that also carries invoking the PictureBox control:

    private void Execution()
    {
        btnCompare.Invoke((MethodInvoker)delegate { pictureBox1.Visible = true; });
        Application.DoEvents();

        // Your main code comes here . . .

        btnCompare.Invoke((MethodInvoker)delegate { pictureBox1.Visible = false; });
    }

Keep in mind, the PictureBox is invisible from Properties Window or do below:

private void ComparerForm_Load(object sender, EventArgs e)
{
    pictureBox1.Visible = false;
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!