Анимация разворачивания [Решено]
Цитата: Удаленный пользователь от 29.10.2021, 11:48Всем привет🖐
Сделал анимацию сворачивания и закрытия по кнопкам, подскажите, пожалуйста, как сделать анимацию разворачивания, какой метод использовать?
Всем привет🖐
Сделал анимацию сворачивания и закрытия по кнопкам, подскажите, пожалуйста, как сделать анимацию разворачивания, какой метод использовать?
Цитата: admin от 29.10.2021, 11:55Привет, Тимур 🖐
Учитывая, что от версии Windows к версии анимация меняется, стоит сделать свою.
Простое и плавное появление от полностью прозрачного к видимому.Нужно просто задаться вопросом, а нужно ли запариваться с разворачиванием, как это делает NetLimiter, который вроде из трея вылетает, а вроде и нет.
Смотрится убого. Уж лучше простое плавное появление. Не слишком долгое, чтобы не раздражало, но и в мере быстрое, чтобы глаз цеплял плавность появления.Урок по анимации Я думаю Ты видел =)
Привет, Тимур 🖐
Учитывая, что от версии Windows к версии анимация меняется, стоит сделать свою.
Простое и плавное появление от полностью прозрачного к видимому.
Нужно просто задаться вопросом, а нужно ли запариваться с разворачиванием, как это делает NetLimiter, который вроде из трея вылетает, а вроде и нет.
Смотрится убого. Уж лучше простое плавное появление. Не слишком долгое, чтобы не раздражало, но и в мере быстрое, чтобы глаз цеплял плавность появления.
Урок по анимации Я думаю Ты видел =)
Цитата: Удаленный пользователь от 29.10.2021, 11:58Анимация и так своя по Button.Click, также есть анимация при первой загрузке по Form.Load. А какой метод нужно использовать, чтобы он задействовался при разворачивании из свёрнутого состояния?
Анимация и так своя по Button.Click, также есть анимация при первой загрузке по Form.Load. А какой метод нужно использовать, чтобы он задействовался при разворачивании из свёрнутого состояния?
Цитата: admin от 29.10.2021, 12:19Анимация такая же, как и для сворачивания, но наоборот.
Я думаю мы сейчас не понимаем друг друга.Если анимация идёт в угасание при сворачивании, то точно также, но наоборот с 0% до 100% идёт появление.
У Тебя нет проблем с самим сворачиванием и разворачиванием?Напиши сюда код, какая анимация идёт при сворачивании.
Анимация такая же, как и для сворачивания, но наоборот.
Я думаю мы сейчас не понимаем друг друга.
Если анимация идёт в угасание при сворачивании, то точно также, но наоборот с 0% до 100% идёт появление.
У Тебя нет проблем с самим сворачиванием и разворачиванием?
Напиши сюда код, какая анимация идёт при сворачивании.
Цитата: admin от 29.10.2021, 12:23Если речь не об анимации, а о методе проверки, то:
SizeChanged += (s, a) => { if (WindowState == FormWindowState.Minimized) { // Окно свернулось } else if (WindowState == FormWindowState.Normal) { // Окно вернулось } };
Если речь не об анимации, а о методе проверки, то:
SizeChanged += (s, a) =>
{
if (WindowState == FormWindowState.Minimized)
{
// Окно свернулось
}
else if (WindowState == FormWindowState.Normal)
{
// Окно вернулось
}
};
Цитата: Удаленный пользователь от 29.10.2021, 12:31Забыл добавить, FormBorderStyle None, поэтому стандартной анимации нет.
[spoiler title="Видео"][/spoiler][spoiler title="Код"]
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; };[/spoiler]
Забыл добавить, 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;
};
Цитата: Удаленный пользователь от 29.10.2021, 12:41Поправил код, в общем нужно сделать анимацию разворачивания, но что-то у меня не получается
[spoiler title="Код"]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; };[/spoiler]
Поправил код, в общем нужно сделать анимацию разворачивания, но что-то у меня не получается
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;
};
Цитата: Удаленный пользователь от 29.10.2021, 12:50UPD: Исправил Opacity <= 0 на < 100, но всё равно не работает. Почему-то бесконечно увеличивается и перемещается форма.
UPD: Исправил Opacity <= 0 на < 100, но всё равно не работает. Почему-то бесконечно увеличивается и перемещается форма.
Цитата: admin от 29.10.2021, 12:54А теперь, Тимур, отформатируй свой код не в одну строку, а так, как Я исправил в этом сообщении.
И не пиши всё в одну строку, если это Тебя путает. А это Тебя путает и у Тебя каша с точка-запятыми и скобками.Чтобы корректно скопировать код из Visual Studio сюда зажми Alt и выделяй левой кнопкой мыши только то, что нужно скопировать.
После этого вставь код именно сюда.
А теперь, Тимур, отформатируй свой код не в одну строку, а так, как Я исправил в этом сообщении.
И не пиши всё в одну строку, если это Тебя путает. А это Тебя путает и у Тебя каша с точка-запятыми и скобками.
Чтобы корректно скопировать код из Visual Studio сюда зажми Alt и выделяй левой кнопкой мыши только то, что нужно скопировать.
После этого вставь код именно сюда.