您的位置:首页 > 其它

Wpf 抽屉效果

2014-03-11 19:11 218 查看
在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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: