Wpf 抽屉效果

在android开发中有抽屉效果,就是在页面的边上有一个按钮,可以通过点击或者拖拽这个按钮,让页面显示。Wpf也可以实现相同的效果。

 

主要是通过一个DoubleAnimation和RectAnimation动画实现

<Grid HorizontalAlignment="Center" Width="90" Height="130" Background="Blue">

            <Image x:Name="Thumb" Source="high.png" Width="90" Height="125">

                <Image.RenderTransform>

                    <TranslateTransform x:Name="Translate"></TranslateTransform>

                </Image.RenderTransform>

                <Image.Clip>

                    <RectangleGeometry x:Name="ClipRect" Rect="0,0,90,125" ></RectangleGeometry>

                </Image.Clip>

            </Image>

        </Grid>

 

private bool _Expand = true;

        public bool Expand

        {

            get { return _Expand; }

            set

            {

                _Expand = value;



                Duration duration = new Duration(TimeSpan.FromSeconds(1));

                FillBehavior behavior = FillBehavior.HoldEnd;



                DoubleAnimation translateAnim = new DoubleAnimation();

                translateAnim.Duration = duration;

                translateAnim.FillBehavior = behavior;



                RectAnimation clipAnim = new RectAnimation();

                clipAnim.Duration = duration;

                clipAnim.FillBehavior = behavior;



                double delta = 80; //收缩的大小



                if (_Expand) // Expand

                {

                    translateAnim.From = -delta;

                    translateAnim.To = 0;



                    clipAnim.From = new Rect(delta, 0, Thumb.ActualWidth, Thumb.ActualHeight);

                    clipAnim.To = new Rect(0, 0, Thumb.ActualWidth, Thumb.ActualHeight);

                }

                else  //Shrink

                {

                    translateAnim.From = 0;

                    translateAnim.To = -delta;



                    clipAnim.From = new Rect(0, 0, Thumb.ActualWidth, Thumb.ActualHeight);

                    clipAnim.To = new Rect(delta, 0, Thumb.ActualWidth, Thumb.ActualHeight);

                }



                Translate.BeginAnimation(TranslateTransform.XProperty, translateAnim);

                ClipRect.BeginAnimation(RectangleGeometry.RectProperty, clipAnim);

            }

        }

 

Demo地址

http://pan.baidu.com/s/1gdxHhnX

 

 

 

 

 

 

你可能感兴趣的:(WPF)