• 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

  • 相关阅读:
    Solution -「Gym 102798I」Sean the Cuber
    Solution -「Gym 102798K」Tree Tweaking
    Solution -「Gym 102798E」So Many Possibilities...
    Solution -「Gym 102759I」Query On A Tree 17
    Solution -「Gym 102759G」LCS 8
    Solution -「Gym 102759F」Interval Graph
    Solution -「Gym 102759C」Economic One-way Roads
    Solution -「ABC 213G」Connectivity 2
    Solution -「ABC 213H」Stroll
    @WebFilter注入失败
  • 原文地址:https://www.cnblogs.com/cody1988/p/3594677.html
Copyright © 2020-2023  润新知