Форум программистов, компьютерный форум, киберфорум
oblomingo
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Windows Presentation Foundation в .NET 4. День 61 - 402 стр. Основы анимации

Запись от oblomingo размещена 20.08.2012 в 16:08
Показов 2772 Комментарии 0
Метки .net, c#

Нажмите на изображение для увеличения
Название: animation.jpg
Просмотров: 718
Размер:	42.0 Кб
ID:	1195
Who-ho! Сегодня интересная тема - анимация. Мне никогда не нравилось устанавливать таймер и вырисовывать каждый кадр заново. Таймер в мусорку - будем кодить по новому. Все делается на основе свойств - надо только определится какое свойство будем менять, до какой величины и за какое время. Попробовал сделать что-то похожее на меню в Маке, то в котором, при наведении мыши каждый элемент увеличивается.
Получилось что-то такое:
C#
1
2
3
4
5
6
7
8
9
<DockPanel LastChildFill="True">
    <StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Height="70" VerticalAlignment="Top" HorizontalAlignment="Center">
        <Ellipse Name="el1" Height="50" Width="50" Fill="DarkOrange" MouseEnter="btn_MouseEnter" MouseLeave="btn_MouseLeave"/>
        <Ellipse Height="50" Width="50" Fill="DarkOrange" MouseEnter="btn_MouseEnter" MouseLeave="btn_MouseLeave"/>
        <Ellipse Height="50" Width="50" Fill="DarkOrange" MouseEnter="btn_MouseEnter" MouseLeave="btn_MouseLeave"/>
        <Ellipse Height="50" Width="50" Fill="DarkOrange" MouseEnter="btn_MouseEnter" MouseLeave="btn_MouseLeave"/>
    </StackPanel>
.............
</DockPanel>
И обработчик:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
private const double animationDuration = 100;
        private const double increaseSize = 20;
        private const double DRatioKoef = 0.9;
 
        private void btn_MouseEnter (object sender, System.Windows.Input.MouseEventArgs e) {
            UIElement element = (UIElement) sender;
            DoubleAnimation widthAnimation = new DoubleAnimation();
            widthAnimation.By = increaseSize;
            widthAnimation.DecelerationRatio = DRatioKoef;
            widthAnimation.Duration = TimeSpan.FromMilliseconds(animationDuration);
            DoubleAnimation heightAnimation = new DoubleAnimation();
            heightAnimation.By = increaseSize;
            heightAnimation.DecelerationRatio = DRatioKoef;
            heightAnimation.Duration = TimeSpan.FromMilliseconds(animationDuration);
            element.BeginAnimation(WidthProperty, widthAnimation);
            element.BeginAnimation(HeightProperty, heightAnimation);
        }
 
        private void btn_MouseLeave (object sender, System.Windows.Input.MouseEventArgs e) {
            UIElement element = (UIElement)sender;
            DoubleAnimation widthAnimation = new DoubleAnimation();
            widthAnimation.Duration = TimeSpan.FromMilliseconds(animationDuration);
            DoubleAnimation heightAnimation = new DoubleAnimation();
            heightAnimation.Duration = TimeSpan.FromMilliseconds(animationDuration);
            element.BeginAnimation(WidthProperty, widthAnimation);
            element.BeginAnimation(HeightProperty, heightAnimation);
        }
Получилась уйма кода, надеюсь дальше в книге объяснят как сделать его покороче...
Метки .net, c#
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru