Карточка с Анимацией на C# - User Control
Вставка
- Опубліковано 6 жов 2024
- В этом видео-уроке я создам красивый user control на C# Windows Froms. Для рисования современного gui и реализации анимации, я воспользовался стандартными средствами Visual Studio и возможностями языка программирования c#.
Подписывайтесь на мой канал: ua-cam.com/users/eg...
Конечно анимацию и такой элемент управления можно реализовать на WPF, но я захотел поэкспериментировать и что у меня получилось я показал в видео.
$Donate: donationalerts...
VK: eegolds
GitHub: github.com/Egolds
Привет, меня зовут Артём. Программирование - это мое хобби, а в мае 2019 года я стал .NET C# разработчиком, и теперь, просто увлечение превратилось в мою работу. Я стараюсь постоянно развиваться, получать новые знания, новый опыт и всем этим я делюсь с вами на этом канале. Надеюсь мой контент приносит вам пользу, чем-то помогает, возможно вдохновляет. Смотрите мои видео, оценивайте их, пишите свое мнение в комментариях и если вам действительно нравятся - обязательно подписывайтесь на канал.
Спасибо всем за поддержку!
#Анимация #Egolds #UserControl
Исходный код для изучения:
github.com/Egolds/EgoldsCardWithAnimation
👨💻👍
Будет ещё видео по анимациям? Есть куча примеров на JS, а на C# их мало. Bounce animation, наприиер.
Только начал изучать Си-шарп
Посмотрел, охренел...
но лайк влепил.
Спасибо большое) удачи в изучении)
Почему я раньше это не нашел?
Офигенный контент
Нихуя не понял, но очень интересно :D
Пхаха)
Дядя,пилишь годный контент,снимай чаще.
Спасибо, буду стараться)
Здорово. По моему мнению было бы ещё лучше, если бы повествование было бы более размеренным. А то иногда сложно понять из-за того,что мыслью не успеваешь за повествованием.
Понял, постараюсь учесть)
Всё супер, но скорость перехода что аж порой не понятно что куда копипастишь и меняешь. Не спеши ты так.
откуда и что за using EgoldsUI ? подскажите пожалуйста
Круто спс
Идея для видео: анимированный toggle switch (разных видов). Спасибо за видос, но кода слошком много...
Как раз что-то такое думал сделать, спасибо, в следующем видео на эту тему будет меньше кода, так как аниматор уже написан)
@@egolds Еще вопрос. А как я могу изменить такой текст как в TextBox? Не знаю, как правильно задать вопрос гуглу.
@@user-rx4zk8um1f текст чего? Контрола из видео, для этого нужно создавать свойство с помощью конструкции { get; set; }
@@egolds Я имел ввиду текстовое поле, которое можно изменять при работе программы.
@@user-rx4zk8um1f "А как я могу изменить такой текст как в TextBox?" я понял что речь о текстовом поле для ввода - textbox, но что ты хочешь изменить? Текст textbox'a программно? textbox.text = "твой текст"
Супер. Молодец.
Egolds, cкажи пожалуйста какой прогой снимаешь скринкаст (видео с экрана)? zoom на определенные фрагменты кода особенно смотрится.
Спасибо)
Снимаю на Bandicam, а zoom уже делаю при монтаже, монтирую в Adobe Premiere Pro
Я вот не понимаю, делаю все по порядку, а он мне в Animator говорит, что Animation не может быть List
Почему так мало лайков???
Я так понимаю фоновый поток в аниматоре после запуска работает постоянно?
Да, можно было бы сделать его завершение, после выполнения всех запросов в очереди, но как по мне пускай работает поток в фоне, чем каждый раз запускать новый поток, когда снова потребуется выполнить анимацию. Это может вызывать фризы.
Hi friend!
I'm from Brazil, congratulations on the video, very good.
In my public float TargetValue, it shows an error in "get => targetValue;" it says "not all code paths return a value".
code cheat:
public float TargetValue
{
get => targetValue;
set {targetValue = value; Reverse = value
Hi,
Thank you very much!
Try just add "return" into "get => targetValue;".
Like this:
"...
get => return targetValue;
..."
Maybe problem is in visual studio version.
You also can get full project here:
github.com/Egolds/WinFormsUserInterface
Good luck!
@@egolds return не помогает, сидел искал информацию не нашел. Если знаете как пофиксить то подскажите пожалуйста
@@Patriot_Play я там немного ошибся, правильно будет вот так:
"...
get { return targetValue; }
..."
В классе Animator вылетает ошибка: Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.
Имя параметра: index. Это вылетает на строчке: AnimationList[index].UpdateFrame();. Повялется в рандомное время выполнения программы, никакой закономерности нет. Из-за чего это может быть и как это исправить?
Тоже ловил такое, нужно попробовать использовать обычный цикл, постараюсь загрузить исправление на днях
@@egolds Спасибо, а можешь как то немного поподробнее способ решения здесь подсказать? А то мы хотели дизайн в нашем проекте в вузе использовать, скоро сдача. Ахахаха
Я имею ввиду, заменить в методе AnimationInvoker() вот этот код:
Parallel.For(0, Count(), index =>
{
AnimationList[index].UpdateFrame();
});
На вот этот:
for (int i = 0; i < AnimationList.Count; i++)
{
try
{
AnimationList[i].UpdateFrame();
}
catch { }
}
@@egolds Большое спасибо, все заработало!
Пожалуйста)
Не подскажете с чем может быть связана ошибка?
Ошибка CS0118 'Animation" является пространство имен, но используется как тип.
покажи пример, как ты используешь данный класс, возможно какое-то пространство имен уже существует с таким названием как класс.
@@egolds напутал с namespace всё ок)
Совершенно не понимаю как вместо фона подставить картинку, при добавлении PictureBox картинка загружается будто на самый верхний слой и перекрывает всю анимацию. Подскажи пожалуйста как это можно реализовать?
думаю картинке тоже нужно определить Rectangle и менять его высоту в аналогии к шторке
Привет. Пересмотрел уже много раз и никак не могу понять, как свойство элемента (допустим высота), изменяется, если мы даже не указали в анимации, какое свойство изменять, а указали только число.
Привет, вот таймкод: 10:15
В этом моменте есть строка в событии OnPaint:
Rectangle rectCurtain = new Rectangle(0, 0, Width - 1, (int)animCurtain.Value);
Когда наводим мышку на компонент, вызываем метод DoCurtainAnimation(); В котором создается объект анимации, в неё мы передаем метод Invalidate(Он вызывает OnPaint), чтобы каждый шаг выполняемой анимации, вызывался этот метод (Invalidate), то есть перерисовка (событие OnPaint).
Получается, что высота шторки равна значению animCurtain.Value, мы увеличиваем/уменьшаем значение Value и обновляем элемент управления. И получается вот такой эффект, как на видео.
Надеюсь понятно объяснил)
Вот тут если что есть исходник:
github.com/Egolds/WinFormsUserInterface/blob/master/yt_DesignUI/Controls/EgoldsCard.cs
@@egolds Ааааааааааа... А я думал анимация взаимодействует с контролом, а тут наоборот, контрол взаимодействует с анимацией. Я понял
Windows Froms спасибо не надо
Почему?
@@egolds ФРОМС =)
Но и forms тоже не надо, на wpf куда быстрее и приятнее.
@@тонистарк-д3ь ну так формс, я спрашиваю что не так?
Суть видео в том, что современный интерфейс, я смог реализовать на winforms, позже будут ролики и на wpf, но сейчас контент-план такой