C#: Уроки C# – Анимация в Windows Forms с амплитудой - видео HD

C#: Уроки C# – Анимация в Windows Forms с амплитудой - видео
00:19:01

12n.ru 10529 роликов

RSS
Black Dream
13:04
+9
Несколько типов анимаций:
//простая линейная анимация — без замедления, без ускорения
double Linear(double curentTime,double startValue,double changeVaue,double duration)
{
return changeVaue * curentTime / duration + startValue;
}
//квадратичное замедление — ускорение с нулевой скорости
double QuadraticIn(double curentTime,double startValue,double changeVaue,double duration)
{
curentTime /= duration;
return changeVaue * Math.Pow(curentTime,2) + startValue;
}
//квадратичное замедление — ускорение до половины, затем замедление
double QuadraticOut(double curentTime, double startValue, double changeVaue, double duration)
{
curentTime /= duration / 2;
if (curentTime < 1)
{
return changeVaue / 2 * Math.Pow(curentTime, 2) + startValue;
}
return -changeVaue / 2 * (curentTime * (curentTime — 2) — 1) + startValue;
}
//кубическое замедление — ускорение с нулевой скорости
double CubicIn(double curentTime, double startValue, double changeVaue, double duration)
{
curentTime /= duration;
return changeVaue * Math.Pow(curentTime, 3) + startValue;
}
//кубическое ослабление — замедление до нулевой скорости
double CubicOut(double curentTime, double startValue, double changeVaue, double duration)
{
curentTime /= duration;
curentTime--;
return changeVaue * (Math.Pow(curentTime, 3) +1) + startValue;
}
//кубическое ослабление — ускорение до половины, затем замедление
double CubicInOut(double curentTime, double startValue, double changeVaue, double duration)
{
curentTime /= duration / 2;
if (curentTime < 1)
{
return changeVaue / 2 * Math.Pow(curentTime, 3) + startValue;
}
curentTime -= 2;
return changeVaue / 2 * (Math.Pow(curentTime, 3) + 2) + startValue;
}
//квартальное ослабления — ускорение с нулевой скорости
double QuarterIn(double curentTime, double startValue, double changeVaue, double duration)
{
curentTime /= duration;
return changeVaue * Math.Pow(curentTime, 4) + startValue;
}
//квартальное ослабление — замедление до нулевой скорости
double QuarterOut(double curentTime, double startValue, double changeVaue, double duration)
{
curentTime /= duration;
curentTime--;
return -changeVaue * (Math.Pow(curentTime, 4) — 1) + startValue;
}
//квартальное ослабление — ускорение до половины, затем замедление
double QuarterInOut(double curentTime, double startValue, double changeVaue, double duration)
{
curentTime /= duration / 2;
if (curentTime < 1)
{
return changeVaue / 2 * Math.Pow(curentTime, 4) + startValue;
}
curentTime -= 2;
return -changeVaue / 2 * (Math.Pow(curentTime, 4) — 2) + startValue;
}
//пятикратное ослабление с ускорение с нулевой скорости
double QuinticIn(double curentTime, double startValue, double changeVaue, double duration)
{
curentTime /= duration;
return changeVaue * Math.Pow(curentTime, 5) + startValue;
}
//пятикратное ослабление — замедление до нулевой скорости
double QuinticOut(double curentTime, double startValue, double changeVaue, double duration)
{
curentTime /= duration;
curentTime--;
return changeVaue * (Math.Pow(curentTime, 5)+1) + startValue;
}
//пятиступенчатое ослабление — ускорение до половины, затем замедление
double QuinticInOut(double curentTime, double startValue, double changeVaue, double duration)
{
curentTime /= duration / 2;
if (curentTime < 1)
{
return changeVaue / 2 * Math.Pow(curentTime, 5) + startValue;
}
curentTime -= 2;
return changeVaue / 2 * (Math.Pow(curentTime, 5) + 2) + startValue;
}
//синусоидальное замедление — ускорение от нулевой скорости
double SinIn(double curentTime, double startValue, double changeVaue, double duration)
{
return -changeVaue * Math.Cos(curentTime / duration * (Math.PI / 2)) + changeVaue + startValue;
}
//синусоидальное ослабление — замедление до нулевой скорости
double SinOut(double curentTime, double startValue, double changeVaue, double duration)
{
return changeVaue * Math.Sin(curentTime / duration * (Math.PI / 2)) + changeVaue + startValue;
}
//синусоидальное ослабление — ускорение до половины, затем замедление
double SinInOut(double curentTime, double startValue, double changeVaue, double duration)
{
return -changeVaue / 2 * (Math.Cos(Math.PI * curentTime / duration) — 1) + startValue;
}
//экспоненциальное замедление — ускорение с нулевой скорости
double ExpIn(double curentTime, double startValue, double changeVaue, double duration)
{
return changeVaue * Math.Pow(2, 10 * (curentTime / duration — 1)) + startValue;
}
//экспоненциальное ослабление — замедление до нулевой скорости
double ExpOut(double curentTime, double startValue, double changeVaue, double duration)
{
return changeVaue * (-Math.Pow(2, -10 * curentTime / duration) + 1) + startValue;
}
//экспоненциальное замедление — ускорение до половины, затем замедление
double ExpInOut(double curentTime, double startValue, double changeVaue, double duration)
{
curentTime /= duration / 2;
if (curentTime < 1)
{
return changeVaue / 2 * Math.Pow(2, 10 * (curentTime — 1)) + startValue;
}
curentTime--;
return changeVaue / 2 * (-Math.Pow(2, -10 * curentTime) + 2) + startValue;
}
//круговое замедление — ускорение с нулевой скорости
double CirculIn(double curentTime, double startValue, double changeVaue, double duration)
{
curentTime /= duration;
return -changeVaue * (Math.Sqrt(1 — Math.Pow(curentTime, 2)) — 1) + startValue;
}
//круговое ослабление — замедление до нулевой скорости
double CirculOut(double curentTime, double startValue, double changeVaue, double duration)
{
curentTime /= duration;
curentTime--;
return changeVaue * Math.Sqrt(1 — Math.Pow(curentTime, 2)) + startValue;
}
//круговое замедление — ускорение до половины, затем замедление
double CirculInOut(double curentTime, double startValue, double changeVaue, double duration)
{
curentTime /= duration / 2;
if (curentTime < 1)
{
return -changeVaue / 2 * (Math.Sqrt(1 — Math.Pow(curentTime, 2)) — 1) + startValue;
}
curentTime -= 2;
return changeVaue / 2 * (Math.Sqrt(1 — Math.Pow(curentTime, 2) + 1) + startValue);
}
Источник:
Anatolii Navrockiy
15:45
+3
Можно использовать функцию косинуса для плавного разгона и плавного останова движения. Такой метод позволяет задать инерцию объекту и максимально его оживить
Ярослав Король
16:43
+2
Большое спасибо лайфхак, раньше использовал таймер, и без амплитуды, но это горздо красивее и в тоже время проще

Хотелось бы узнать ещё лайфхак, как реализовать многостраничность на одной форме )))
Fhhv Gggh
17:46
+1
Христ привет помню ты делал видео про драгндроп с переносом файлов, вопрос можно ли из формы вытащить файл как из папки держа файл мышкой?
Fhhv Gggh
17:47
+1
эх были бы у винформ нормальные тени для контролов можно было бы вообще не обращать внимание на wpf и xaml
Влад Foton
17:51
+1
Подача материала как всегда на высоте!!!
Костя Атоженко
20:02
+1
Я только хочу начать учиться.Пытался и раньше но у меня не получалось ведь было всё очень сложно.И вот нашел я этот курс стоит ли тратить своё время на этот курс?
Никита Ефимов
21:59
+1
Спасибо! А Win10Tweaker это winforms или wpf?
Dex Mask
22:58
+1
я: — когда уже новые уроки по C#
Христ через полгода: — ИИИИ бац бац бац бац бац бац бац бац
я: — а теперь я не успеваю за ним)))
Спасибо большое за уроки!)))) очень помогают
Хасан Джумашов
06:36
+1
Здравствуйте для начинающих программирования c# windows forms какой книги рекомендуете заранее спасибо.