Wpf 抽屉效果

Posted lonelyxmas

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Wpf 抽屉效果相关的知识,希望对你有一定的参考价值。

原文: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 抽屉效果的主要内容,如果未能解决你的问题,请参考以下文章

WPF 实现抽屉菜单

C# WPF抽屉效果实现

WPF 实现抽屉效果 在线等待 急急急!!!!

在导航抽屉关闭之前加载片段

导航抽屉活动:在按钮单击时从片段移动到片段

如何在导航抽屉活动模板中的片段之间传递字符串变量