Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2018, 21:57   #1
laketych
Пользователь
 
Регистрация: 22.12.2015
Сообщений: 37
По умолчанию Как вызвать анимацию в .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 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать анимацию в PHP Vlad123DD HTML и CSS 1 11.11.2016 21:22
Как вызвать другое приложение из AIR for Android? Skype можно вызвать, если в коде кнопки вызова будет записано так x1233 Общие вопросы Web 0 06.10.2015 21: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