将网格从一个位置动画到另一个位置

Animate Grid from one position to another(将网格从一个位置动画到另一个位置)
本文介绍了将网格从一个位置动画到另一个位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个图像和按钮网格,我想自动为从一个位置到另一个位置(实际上是左边几个空格)的运动设置动画,但它没有奏效.我已经尝试在 xaml 中使用故事板并以编程方式使用下面的代码,但它现在可以工作了.请帮忙!!!

I have a grid of images and buttons, and I want to animate motion from one position to another (actually a few spaces to the left) automatically, but it hasn't worked. I've tried using a storyboard in xaml and programatically as in the code below, but its now working. Please help!!!

    public static void MoveTo(Grid target)
    {
        Canvas.SetLeft(target, 0);

        var top = Canvas.GetTop(target);
        var left = Canvas.GetLeft(target);
        TranslateTransform trans = new TranslateTransform();
        target.RenderTransform = trans;
        double newX = (double)(left - 300);
        double newY = (double)top;
        DoubleAnimation anim1 = new DoubleAnimation(top, -15, TimeSpan.FromSeconds(10));
        //DoubleAnimation anim1 = new DoubleAnimation(top, newY - top, TimeSpan.FromSeconds(10));

        DoubleAnimation anim2 = new DoubleAnimation(left, newX - left, TimeSpan.FromSeconds(10));
        anim1.AutoReverse = true;
        anim1.RepeatBehavior = RepeatBehavior.Forever;
        trans.BeginAnimation(TranslateTransform.XProperty, anim1);
        trans.BeginAnimation(TranslateTransform.YProperty, anim2);
    }

推荐答案

完全 TranslateTransform 不适合你想要的.更好地使用思维动画

totally TranslateTransform isnt good for that you want .better to use thinkness animation

我建议你不要使用画布并将其更改为网格,但如果你使用画布,请使用此代码

i advise you dont use canavas and change it to grid but if you use canavas use this code

 private void Animationsss(Grid grd)
        {
            //create an animation
            DoubleAnimation da = new DoubleAnimation();
            //set from animation to start position 
            //dont forget set canvas.left for grid if u dont u will get error
            da.From = Canvas.GetLeft(grd);
            //set second position of grid
            da.To = -100;
            //set duration
            da.Duration = new Duration(TimeSpan.FromSeconds(2));
            //run animation if u want stop ,start etc use story board
            grd.BeginAnimation(Canvas.LeftProperty, da);

        }

如果你使用网格代码是这样的:

if you use grid code is this :

 private void Animation(Grid grd)
        {
            ThicknessAnimation ta = new ThicknessAnimation();
            //your first place
            ta.From = grd.Margin;
            //this move your grid 1000 over from left side
            //you can use -1000 to move to left side
            ta.To = new Thickness(1000, 0, 0, 0);
            //time the animation playes
            ta.Duration = new Duration(TimeSpan.FromSeconds(10));
            //dont need to use story board but if you want pause,stop etc use story board
            grd.BeginAnimation(Grid.MarginProperty, ta);
        }

你可以使用不透明动画来淡化你的网格......如果移动和淡化它会很好!

you can use opacity animation for fade your grid ... it show good if move and fade !

    private void Animationsss(Grid grd)
        {
            DoubleAnimation da = new DoubleAnimation(1, 0, new Duration(TimeSpan.FromSeconds(2)));
            grd.BeginAnimation(Grid.OpacityProperty, da);
        }

如果没有任何理由您可以将画布更改为网格,并且更好地使用 TranslateTransform 来调整控件的大小,例如此代码下方的代码,如果鼠标进入,则调整控件的大小:

if there isnt any reason u can change canavas to grid and also better use TranslateTransform for resize controls like code below this code resize control if mouse enter in it :

private void grid1_MouseEnter(object sender, MouseEventArgs e)
        {
            //at first its normal size
            ScaleTransform st = new ScaleTransform(1, 1);
            //animation size to 1.25 persent of real size
            DoubleAnimation da = new  DoubleAnimation(1,1.25, new Duration(TimeSpan.FromSeconds(2)));
            //set transform to control
            grid1.RenderTransform = st;
            //animation transform now From Y And X
            st.BeginAnimation(ScaleTransform.ScaleXProperty, da);
            st.BeginAnimation(ScaleTransform.ScaleYProperty, da);
        }

如果你的宽度或高度动画做同样的工作,如缩放变换:)

if you animation for width or height do same work like scale transform :)

希望我能帮助你...:))

hope i can help you ...:))

请给我留言

这篇关于将网格从一个位置动画到另一个位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

DispatcherQueue null when trying to update Ui property in ViewModel(尝试更新ViewModel中的Ui属性时DispatcherQueue为空)
Drawing over all windows on multiple monitors(在多个监视器上绘制所有窗口)
Programmatically show the desktop(以编程方式显示桌面)
c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
LINQ many-to-many relationship, how to write a correct WHERE clause?(LINQ多对多关系,如何写一个正确的WHERE子句?)