Forum

Пожалуйста or Регистрация для создания сообщений и тем.

Анимация разворачивания [Решено]

Page 1 of 2Next

Всем привет🖐
Сделал анимацию сворачивания и закрытия по кнопкам, подскажите, пожалуйста, как сделать анимацию разворачивания, какой метод использовать?

Привет, Тимур 🖐
Учитывая, что от версии Windows к версии анимация меняется, стоит сделать свою.
Простое и плавное появление от полностью прозрачного к видимому.

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

Урок по анимации Я думаю Ты видел =)

Анимация и так своя по Button.Click, также есть анимация при первой загрузке по Form.Load. А какой метод нужно использовать, чтобы он задействовался при разворачивании из свёрнутого состояния?

Анимация такая же, как и для сворачивания, но наоборот.
Я думаю мы сейчас не понимаем друг друга.

Если анимация идёт в угасание при сворачивании, то точно также, но наоборот с 0% до 100% идёт появление.
У Тебя нет проблем с самим сворачиванием и разворачиванием?

Напиши сюда код, какая анимация идёт при сворачивании.

Если речь не об анимации, а о методе проверки, то:

SizeChanged += (s, a) =>
{
    if (WindowState == FormWindowState.Minimized)
    {
        // Окно свернулось
    }
    else if (WindowState == FormWindowState.Normal)
    {
        // Окно вернулось
    }
};

 

Забыл добавить, FormBorderStyle None, поэтому стандартной анимации нет.

Видео

Код

Load += async (s, a) =>
{
    if (WindowState == FormWindowState.Minimized)
        WindowState = FormWindowState.Normal;
    while (Opacity < 100)
    {
        Opacity += 0.1;
        await Task.Delay(1);
    } 
};
button1.Click += async (s, a) =>
{
    int x = Location.X;
    int y = Location.Y;
    int h = Height; 
    int w = Width; 
    while (Opacity > 0) 
    { 
        Opacity -= 0.2;
        Height -= 10;
        Width -= 10; 
        Location = new Point(Location.X - 25, Location.Y + 35); 
        await Task.Delay(1);
    }; 
    Location = new Point(x, y); 
    Height = h; 
    Width = w; 
    Refresh(); 
    WindowState = FormWindowState.Minimized;
};

 

Поправил код, в общем нужно сделать анимацию разворачивания, но что-то у меня не получается

Код

Load += async (s, a) =>
{
    if (WindowState == FormWindowState.Minimized)
        WindowState = FormWindowState.Normal;
    while (Opacity < 100)
    {
        Opacity += 0.1; 
        await Task.Delay(1);
    }
};

button1.Click += async (s, a) =>
{
    while (Opacity > 0)
    {
        Opacity -= 0.2; Height -= 10; Width -= 10;
        Location = new Point(Location.X - 25, Location.Y + 35);
        await Task.Delay(1);
    };
    WindowState = FormWindowState.Minimized;
};

UPD: Исправил Opacity <= 0 на < 100, но всё равно не работает. Почему-то бесконечно увеличивается и перемещается форма.

А теперь, Тимур, отформатируй свой код не в одну строку, а так, как Я исправил в этом сообщении.
И не пиши всё в одну строку, если это Тебя путает. А это Тебя путает и у Тебя каша с точка-запятыми и скобками.

Чтобы корректно скопировать код из Visual Studio сюда зажми Alt и выделяй левой кнопкой мыши только то, что нужно скопировать.
После этого вставь код именно сюда.

И код у Тебя не работает, потому что Ты не свернул приложение, а лишь санимировал его.

Page 1 of 2Next