Animate Grid from one position to another

后端 未结 2 1601
暗喜
暗喜 2021-01-06 17:30

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\'v

2条回答
  •  抹茶落季
    2021-01-06 17:40

    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);
            }
    

    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 ...:))

    leave comment for me please

提交回复
热议问题