平移动画

WPF平移动画
    /// <summary>
    /// 左移动画
    /// </summary>
    private void leftTrans(Button button)
    {
        TranslateTransform translate = new TranslateTransform();
        button.RenderTransform = translate;

        NameScope.SetNameScope(this, new NameScope());
        this.RegisterName("translate", translate);

        //设置动画路径
        PathFigure pathFigure = new PathFigure();
        pathFigure.IsClosed = false;//此值设为 false,则为单向动画
        pathFigure.StartPoint = new Point(0, 0);
        pathFigure.Segments.Add(new LineSegment(new Point(-50, 0), true));

        PathGeometry pathGeometry = new PathGeometry();
        pathGeometry.Figures.Add(pathFigure);

        Path path = new Path();
        path.Data = pathGeometry;

        //声明路径动画
        DoubleAnimationUsingPath animationX = new DoubleAnimationUsingPath();
        animationX.PathGeometry = path.Data.GetFlattenedPathGeometry();
        animationX.Source = PathAnimationSource.X;
        animationX.Duration = new Duration(TimeSpan.FromMilliseconds(200));

        Storyboard storyboard = new Storyboard();
        Storyboard.SetTargetName(animationX, "translate");
        Storyboard.SetTargetProperty(animationX, new PropertyPath(TranslateTransform.XProperty));

        storyboard.Children.Add(animationX);
        storyboard.Begin(button);//开始动画
    }

    /// <summary>
    /// 右移动画
    /// </summary>
    private void rightTrans(Button button)
    {
        TranslateTransform translate = new TranslateTransform();
        button.RenderTransform = translate;

        NameScope.SetNameScope(this, new NameScope());
        this.RegisterName("translate", translate);

        //设置动画路径
        PathFigure pathFigure = new PathFigure();
        pathFigure.IsClosed = false;//此值设为 false,则为单向动画
        pathFigure.StartPoint = new Point(0, 0);
        pathFigure.Segments.Add(new LineSegment(new Point(50, 0), true));

        PathGeometry pathGeometry = new PathGeometry();
        pathGeometry.Figures.Add(pathFigure);

        Path path = new Path();
        path.Data = pathGeometry;

        //声明路径动画
        DoubleAnimationUsingPath animationX = new DoubleAnimationUsingPath();
        animationX.PathGeometry = path.Data.GetFlattenedPathGeometry();
        animationX.Source = PathAnimationSource.X;
        animationX.Duration = new Duration(TimeSpan.FromMilliseconds(200));

        Storyboard storyboard = new Storyboard();
        Storyboard.SetTargetName(animationX, "translate");
        Storyboard.SetTargetProperty(animationX, new PropertyPath(TranslateTransform.XProperty));

        storyboard.Children.Add(animationX);
        storyboard.Begin(button);//开始动画
    }

    /// <summary>
    /// 上移动画
    /// </summary>
    private void topTrans(Button button)
    {
        TranslateTransform translate = new TranslateTransform();
        button.RenderTransform = translate;

        NameScope.SetNameScope(this, new NameScope());
        this.RegisterName("translate", translate);

        //设置动画路径
        PathFigure pathFigure = new PathFigure();
        pathFigure.IsClosed = false;//此值设为 false,则为单向动画
        pathFigure.StartPoint = new Point(0, 0);
        pathFigure.Segments.Add(new LineSegment(new Point(0, -50), true));

        PathGeometry pathGeometry = new PathGeometry();
        pathGeometry.Figures.Add(pathFigure);

        Path path = new Path();
        path.Data = pathGeometry;

        //声明路径动画
        DoubleAnimationUsingPath animationY = new DoubleAnimationUsingPath();
        animationY.PathGeometry = path.Data.GetFlattenedPathGeometry();
        animationY.Source = PathAnimationSource.Y;
        animationY.Duration = new Duration(TimeSpan.FromMilliseconds(200));

        Storyboard storyboard = new Storyboard();
        Storyboard.SetTargetName(animationY, "translate");
        Storyboard.SetTargetProperty(animationY, new PropertyPath(TranslateTransform.YProperty));

        storyboard.Children.Add(animationY);
        storyboard.Begin(button);//开始动画
    }

    /// <summary>
    /// 下移动画
    /// </summary>
    private void bottomTrans(Button button)
    {
        TranslateTransform translate = new TranslateTransform();
        button.RenderTransform = translate;

        NameScope.SetNameScope(this, new NameScope());
        this.RegisterName("translate", translate);

        //设置动画路径
        PathFigure pathFigure = new PathFigure();
        pathFigure.IsClosed = false;//此值设为 false,则为单向动画
        pathFigure.StartPoint = new Point(0, 0);
        pathFigure.Segments.Add(new LineSegment(new Point(0, 50), true));

        PathGeometry pathGeometry = new PathGeometry();
        pathGeometry.Figures.Add(pathFigure);

        Path path = new Path();
        path.Data = pathGeometry;

        //声明路径动画
        DoubleAnimationUsingPath animationY = new DoubleAnimationUsingPath();
        animationY.PathGeometry = path.Data.GetFlattenedPathGeometry();
        animationY.Source = PathAnimationSource.Y;
        animationY.Duration = new Duration(TimeSpan.FromMilliseconds(200));

        Storyboard storyboard = new Storyboard();
        Storyboard.SetTargetName(animationY, "translate");
        Storyboard.SetTargetProperty(animationY, new PropertyPath(TranslateTransform.YProperty));

        storyboard.Children.Add(animationY);
        storyboard.Begin(button);//开始动画
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值