欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

平移动画

程序员文章站 2022-06-15 14:52:31
...

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);//开始动画
    }