GIF анимация не работает в форме Windows - PullRequest
5 голосов
/ 28 марта 2012

У меня 2 WinForms

Form2 использует Infragistics ultraTabControl.На вкладке Изменение я показываю форму 1.

В форме1

У меня есть PictureBox, назначенный с анимированным GIF

В форме 2

Я показываюФорма 1 выглядит следующим образом.

Form1 frmOne=new Form1();
frmOne.Show();

Проблема

GIF не воспроизводится анимация.

Ответы [ 7 ]

6 голосов
/ 10 января 2014

Убедитесь, что у вас есть изображение в свойстве image НЕ ФОН СВОЙСТВА ИЗОБРАЖЕНИЯ . Это ошибка, которую я сделал

4 голосов
/ 28 марта 2012

Работает нормально для меня.Я только что перетащил новый pictureBox на форму и установил свойство изображения в событии Form_Load () и показал GIF-анимацию.

Я сделал то же самое, что и вы, по нажатию кнопки:

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

В моем тестеФорма:

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

Примечание. Если окно с изображением отключено, оно не будет анимировать GIF

Ссылка:
Как отображать анимированные GIF-изображения в форме Windows(c #)
Анимированный индикатор прогресса в C # (Windows Forms)

Попробуйте реализовать по этой ссылке: Анимированный GIF в картинке не анимируется apprach.

1 голос
/ 12 августа 2015

Лучший способ добиться этого - запустить анимацию в асинхронной задаче, но, соответственно, некоторые ограничения возможны для этого в форме окна, используя:

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

Мой всплеск отображается с gif (загрузка)

Например: в вашем конструкторе,

public partial class MainMenu : Form
{

    private SplashScreen splash = new SplashScreen();

    public MainMenu ()
    {
        InitializeComponent();

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

       Thread.Sleep(2000);
   }

Обязательно ставьте Thread.Sleep(int) после запускановый, не забывайте, что каждое действие, которое вы сделали в этом потоке, должно быть вызвано, например:

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

Теперь ваш gif должен работать!

1 голос
/ 29 марта 2012

решаемые

Моя текущая тема занята воспроизведением GIF-анимации.

Я пробовал так много способов, как Application.DoEvents (); и т.п. Но ничто не может мне помочь.

Ответ в следующем вопросе, в котором используется многопоточность, - очень хорошая рабочая идея.

StackOverFlow: Показать / Скрыть заставку

Спасибо за каждого.

0 голосов
/ 08 февраля 2017

У меня была та же проблема, и я сталкивался с различными решениями, применяя которые я сталкивался с несколькими разными проблемами. Наконец, ниже я собрал несколько фрагментов из разных постов, которые сработали для меня, как и ожидалось.

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

Вот метод Выполнение , который также вызывает вызов элемента управления PictureBox:

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

        // Your main code comes here . . .

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

Имейте в виду, что PictureBox невидим из Окна свойств или выполните ниже:

private void ComparerForm_Load(object sender, EventArgs e)
{
    pictureBox1.Visible = false;
}
0 голосов
/ 31 января 2017

Если ни один из предыдущих ответов не работает для вас, другая идея - обновить тег изображения или написать его на лету с помощью jQuery.В моем случае мне нужно было показать анимированный GIF при нажатии кнопки на форме.Раньше это показывалось, но не анимация.Я просто добавил событие jQuery, когда была нажата кнопка, которая на лету добавила тег изображения в div через функцию html () родительского тега.

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

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

Стоит попробовать, особенно если вы уже используете jquery на своей странице.

0 голосов
/ 28 марта 2012

Этот вопрос уже поднимался раньше.Хотя подход другой, но концепция вопросов одна и та же

StackOverFlow: как отображать анимированные GIF-файлы в форме Windows (c #)

Исходный проект, где вы можетеиспользуйте Code Project

Я думаю, это поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...