Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为UWP滑块的拇指设置动画_C#_Windows_Uwp_Win Universal App_Uwp Xaml - Fatal编程技术网

C# 为UWP滑块的拇指设置动画

C# 为UWP滑块的拇指设置动画,c#,windows,uwp,win-universal-app,uwp-xaml,C#,Windows,Uwp,Win Universal App,Uwp Xaml,我正在UWP应用程序中使用滑块XAML控件。每当我们点击滑块并更改其值时,我希望滑块拇指在从旧位置移动到新位置时只显示平移动画。如何实现这一点?您可以使用属性获取最后一个值,并播放动画将最后一个值设置为当前值 在xaml中添加滑块 <Slider x:Name="Slider" Value="{x:Bind Value,Mode=TwoWay}"/> 值可以设置可以开始情节提要的\u lastValue 在主页代码中为滑块添加PointerPressedEvent和Poin

我正在UWP应用程序中使用滑块XAML控件。每当我们点击滑块并更改其值时,我希望滑块拇指在从旧位置移动到新位置时只显示平移动画。如何实现这一点?

您可以使用属性获取最后一个值,并播放动画将最后一个值设置为当前值

在xaml中添加滑块

    <Slider x:Name="Slider" Value="{x:Bind Value,Mode=TwoWay}"/>
值可以设置可以开始情节提要的
\u lastValue

在主页代码中为滑块添加PointerPressedEvent和PointerReleasedEvent将处理此问题

    public MainPage()
    {
        InitializeComponent();
        Slider.AddHandler(PointerPressedEvent, new PointerEventHandler(Slider_OnPointerPressed), true);
        Slider.AddHandler(PointerReleasedEvent, new PointerEventHandler(Slider_OnPointerReleased), true);
    }
我将点击点保存在已压缩的
滑动点中,并比较已压缩的
滑动点中的当前点。用户可以单击应开始动画的滑块,并拖动不应开始动画的拇指

    private void Slider_OnPointerPressed(object sender, PointerRoutedEventArgs e)
    {
        var slider = (Slider) sender;

        ClickPoint = e.GetCurrentPoint(slider).Position;
    }

    private Point ClickPoint { set; get; }

    private void Slider_OnPointerReleased(object sender, PointerRoutedEventArgs e)
    {
        var slider = (Slider) sender;

        var point = e.GetCurrentPoint(slider).Position;

        var x = point.X - ClickPoint.X;
        var y = point.Y - ClickPoint.Y;
        var length = x * x + y * y;
        if (length < 10)
        {
            AnimationValue();
        }
    }
    private void AnimationValue()
    {
        var storyboard = new Storyboard();

        var animation = new DoubleAnimation
        {
            From = _lastValue,
            To = Value,
            Duration = TimeSpan.FromSeconds(2),
            EasingFunction = new CubicEase(),
            EnableDependentAnimation = true
        };

        Storyboard.SetTarget(animation, Slider);
        Storyboard.SetTargetProperty(animation, "Value");

        storyboard.BeginTime = TimeSpan.Zero;
        storyboard.Children.Add(animation);

        storyboard.Begin();

        _storyboard = storyboard;
    }
您可以自定义
持续时间
测量功能
来更改时间

全部输入代码


如果你能读中文,请读我的,因为我的英语很差,我担心我不能准确地告诉你我的意思。

你可以使用属性获取最后一个值,并播放动画将最后一个值设置为当前值

在xaml中添加滑块

    <Slider x:Name="Slider" Value="{x:Bind Value,Mode=TwoWay}"/>
值可以设置可以开始情节提要的
\u lastValue

在主页代码中为滑块添加PointerPressedEvent和PointerReleasedEvent将处理此问题

    public MainPage()
    {
        InitializeComponent();
        Slider.AddHandler(PointerPressedEvent, new PointerEventHandler(Slider_OnPointerPressed), true);
        Slider.AddHandler(PointerReleasedEvent, new PointerEventHandler(Slider_OnPointerReleased), true);
    }
我将点击点保存在已压缩的
滑动点中,并比较已压缩的
滑动点中的当前点。用户可以单击应开始动画的滑块,并拖动不应开始动画的拇指

    private void Slider_OnPointerPressed(object sender, PointerRoutedEventArgs e)
    {
        var slider = (Slider) sender;

        ClickPoint = e.GetCurrentPoint(slider).Position;
    }

    private Point ClickPoint { set; get; }

    private void Slider_OnPointerReleased(object sender, PointerRoutedEventArgs e)
    {
        var slider = (Slider) sender;

        var point = e.GetCurrentPoint(slider).Position;

        var x = point.X - ClickPoint.X;
        var y = point.Y - ClickPoint.Y;
        var length = x * x + y * y;
        if (length < 10)
        {
            AnimationValue();
        }
    }
    private void AnimationValue()
    {
        var storyboard = new Storyboard();

        var animation = new DoubleAnimation
        {
            From = _lastValue,
            To = Value,
            Duration = TimeSpan.FromSeconds(2),
            EasingFunction = new CubicEase(),
            EnableDependentAnimation = true
        };

        Storyboard.SetTarget(animation, Slider);
        Storyboard.SetTargetProperty(animation, "Value");

        storyboard.BeginTime = TimeSpan.Zero;
        storyboard.Children.Add(animation);

        storyboard.Begin();

        _storyboard = storyboard;
    }
您可以自定义
持续时间
测量功能
来更改时间

全部输入代码

如果你能读中文,请读我的,因为我的英语很差,我担心我不能准确地告诉你我的意思