Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 15.06.2018, 22:57   #1
laketych
Пользователь
 
Регистрация: 22.12.2015
Сообщений: 37
Репутация: 9
По умолчанию Как вызвать анимацию в .xaml.cs?

Есть круг, который имеет события перемещаться по оси Х за ограниченными координатами.
Если круг не доводят до конца одной из конечных координат - условие if -> его перемещает до конца.
НО! Так как это происходит резко. Я решил добавить анимацию:
Код:

<!--ANIMATED ELLIPSE TO CORNERS-->
    <Storyboard x:Key="EllipseInite">
        <DoubleAnimation To="15" Duration="00:00:4">
            <DoubleAnimation.EasingFunction>
                <ElasticEase Oscillations="1" 
                             Springiness="27" 
                             EasingMode="EaseOut">
                </ElasticEase>
            </DoubleAnimation.EasingFunction>
        </DoubleAnimation>
    </Storyboard>

    <Storyboard x:Key="EllipseFinite">
        <DoubleAnimation To="420" Duration="00:00:4" >
            <DoubleAnimation.EasingFunction>
                <ElasticEase Oscillations="1" 
                             Springiness="27" 
                             EasingMode="EaseOut">
                </ElasticEase>
            </DoubleAnimation.EasingFunction>
        </DoubleAnimation>
    </Storyboard>

Проблема заключается в том, что я не могу понять почему я не могу или она не вызывается в Switcher(MainWindow).xaml.cs?
Код:

public partial class Switcher : Window
    {
        public Switcher()
        {
            InitializeComponent();
        }

        bool Action = false;
        double   InitPxls = 15;
        double FinitePxls = 420;
        double Movement;
        Point Point;
       
        private void CircleKnob_MouseDown(object sender, MouseButtonEventArgs e)
        {
            Action = true;
            Point = Mouse.GetPosition(CircleKnob);
            Mouse.Capture(CircleKnob);
        }

        private void CircleKnob_MouseMove(object sender, MouseEventArgs e)
        {
            if (Action)
            {
                Movement = Canvas.GetLeft(CircleKnob) + Mouse.GetPosition(CircleKnob).X - Point.X;

                if (Movement > InitPxls && Movement < FinitePxls) {
                    Canvas.SetLeft(CircleKnob,   Movement);
                    Canvas.SetLeft(CircleShadow, Movement - 15);
                }
            }
        }

        private void CircleKnob_MouseUp(object sender, MouseButtonEventArgs e)
        {
            Action = false;
            Mouse.Capture(null);

            if (Movement < InitPxls + 210)
            {
                //Canvas.SetLeft(CircleKnob, InitPxls);
                //Canvas.SetLeft(CircleShadow, InitPxls - 15);
                this.Loaded += new RoutedEventHandler(InitAnimation);
            }
            else
            {
                //Canvas.SetLeft(CircleKnob, InitPxls);
                //Canvas.SetLeft(CircleShadow, InitPxls - 15);
                this.Loaded += new RoutedEventHandler(FinitAnimation);
            }
        }

        private void InitAnimation(object sender, RoutedEventArgs e) {
            Storyboard  Init = this.FindResource("EllipseInite" ) as Storyboard;
            Storyboard.SetTarget(Init, this.CircleKnob);
            Init.Begin();
        }

        private void FinitAnimation(object sender, RoutedEventArgs e)
        {
            Storyboard Init = this.FindResource("EllipseInite") as Storyboard;
            Storyboard.SetTarget(Init, this.CircleKnob);
            Init.Begin();
        }
    }

А вот и сам круг:
Код:

<Ellipse   x:Name="CircleKnob" Width="230" Height="230"  Style="{StaticResource EllipseEffect}"
                       Fill="{StaticResource Circle}" 
                       Canvas.Left="14" Canvas.Top="15"
                       
                       MouseDown="CircleKnob_MouseDown"
                       MouseMove="CircleKnob_MouseMove"
                       MouseUp  ="CircleKnob_MouseUp"   >
</Ellipse>

laketych вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать анимацию в PHP Vlad123DD HTML и CSS 1 11.11.2016 22:22
Как вызвать другое приложение из AIR for Android? Skype можно вызвать, если в коде кнопки вызова будет записано так x1233 Общие вопросы Web 0 06.10.2015 22:06
App.xaml, MainPage.xaml, и тд. Chelovekpredel Общие вопросы .NET 0 19.12.2012 14:52
включить побочный Generic.xaml файл в основной App.xaml ImmortalAlexSan WPF, UWP, WinRT, XAML 1 21.09.2012 19:58
Как сделать анимацию картинки 2210 Мультимедиа в Delphi 4 01.04.2009 02:23


06:47.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru