
第一种方式:
XAML文件
第一步定义资源:
<UserControl.Resources>
<Storyboard x:Key="layercollapseTransition">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.Targetname="BodyBack1"
Storyboard.TargetProperty="(UIElement.Rendertransform).(Translatetransform.Y)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.2000000" Value="125"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="layerexpandTransition">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.Targetname="BodyBack1"
Storyboard.TargetProperty="(UIElement.Rendertransform).(Translatetransform.Y)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="125"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.2000000" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</UserControl.Resources>
第二部设置关联空间
<Canvas margin="0,122,16" HorizontalAlignment="Right" VerticalAlignment="Bottom" Canvas.ZIndex="200" x:name="collapsedPane" Background="transparent" Visibility="Collapsed">
<GrID >
<Image Height="16" name="imageShow" Stretch="Fill" WIDth="16" Source="images/btn_expand.png" Opacity="0.4"
tooltipService.tooltip="显示图层控制" MouseleftbuttonDown="imageShow_MouseleftbuttonDown" MouseLeave="imagehIDe_MouseLeave" MouseEnter="imagehIDe_MouseEnter"
Cursor="Hand"/>
</GrID>
</Canvas>
<Canvas x:name="BodyBack1" HorizontalAlignment="Right" VerticalAlignment="Bottom" RendertransformOrigin="0.5,0.5" Background="transparent" margin="0,207,125">
<border x:name="citylayer" Background="#77919191" borderThickness="1" CornerRadius="5"
HorizontalAlignment="Right" VerticalAlignment="Bottom"
margin="0,105,0" padding="5" borderBrush="Black" Canvas.left="0" Canvas.top="7">
<StackPanel VerticalAlignment="Stretch" WIDth="90" HorizontalAlignment="Stretch" Canvas.left="0">
<Image HorizontalAlignment="left" VerticalAlignment="top" Height="16" name="imagehIDe" Stretch="Fill" WIDth="16" Source="images/btn_expand.png"
tooltipService.tooltip="隐藏图层控制"
Cursor="Hand" MouseleftbuttonDown="imagehIDe_MouseleftbuttonDown" MouseLeave="imagehIDe_MouseLeave" MouseEnter="imagehIDe_MouseEnter" Opacity="0.4" />
<CheckBox Content="污染物" Height="16" HorizontalAlignment="left" margin="16,20" name="ckbWRWFB" VerticalAlignment="Bottom" Click="ckbWRWFB_Click" />
<CheckBox Content="污染源" Height="16" HorizontalAlignment="left" margin="16,20" name="ckbWRY" VerticalAlignment="Bottom" Click="ckbWRY_Click" />
<CheckBox Content="风向风速" Height="16" HorizontalAlignment="left" margin="16,0" name="ckbFXFS" VerticalAlignment="Bottom" Click="ckbFXFS_Click" />
</StackPanel>
</border>
<Canvas.Rendertransform>
<Translatetransform />
</Canvas.Rendertransform>
</Canvas>
第三步关联代码
private voID imagehIDe_MouseleftbuttonDown(object sender,MousebuttonEventArgs e)
{
var collapseAnimation = (Storyboard)Resources["layercollapseTransition"];//获取故事板
collapseAnimation.Begin();//隐藏故事板开始执行
collapsedPane.Visibility = Visibility.Visible;//展开面板可见
}
private voID imagehIDe_MouseLeave(object sender,MouseEventArgs e)
{
((Image)sender).Opacity = 0.4;//设置图片透明度
}
private voID imagehIDe_MouseEnter(object sender,MouseEventArgs e)
{
((Image)sender).Opacity = 1;//设置图片透明度
}
private voID imageShow_MouseleftbuttonDown(object sender,MousebuttonEventArgs e)
{
var collapseAnimation = (Storyboard)Resources["layerexpandTransition"];//获取展开的故事板
collapseAnimation.Begin();//故事板开始执行
BodyBack1.Visibility = Visibility.Visible;//图层控制面板可见
collapsedPane.Visibility = Visibility.Collapsed;//展开面板不可见
}
第二种方式:(纯代码)
/// <summary> /// SetHIDeAction() 设置隐藏效果 /// </summary> /// <param name="Pcanvas">容器</param> /// <param name="PPropertypath">属性路径</param> /// <param name="PwIDthorheight">高度或宽度</param> /// <param name="Plong">持续时长</param> /// <returns></returns> public voID SetHIDeAction(Canvas Pcanvas,string PPropertypath,int PwIDthorheight,double Plong) { Storyboard keyFrameboard = new Storyboard(); DoubleAnimationUsingKeyFrames dakeyframe = new DoubleAnimationUsingKeyFrames(); //设置rect矩形控件的Opacity透明度,并且开始动画事件为0秒的时候。 Storyboard.SetTarget(dakeyframe,Pcanvas); Storyboard.SetTargetProperty(dakeyframe,new PropertyPath(PPropertypath)); dakeyframe.BeginTime = new TimeSpan(0,0);//设置开始时间 //添加一个在第二秒的时候Opacity透明度值为1的关键帧 SplineDoubleKeyFrame SKeyFrame = new SplineDoubleKeyFrame(); SKeyFrame.KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromSeconds(0)); SKeyFrame.Value = 0; dakeyframe.KeyFrames.Add(SKeyFrame); //添加一个在第四秒的时候Opacity透明度值为0.2的关键帧 SplineDoubleKeyFrame SKeyFrame1 = new SplineDoubleKeyFrame(); SKeyFrame1.KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromSeconds(Plong)); SKeyFrame1.Value = PwIDthorheight; dakeyframe.KeyFrames.Add(SKeyFrame1); keyFrameboard.Children.Add(dakeyframe); keyFrameboard.Begin();//隐藏故事板开始执行 } /// <summary> /// SetShowAction() 设置显示效果 /// </summary> /// <param name="Pcanvas">容器</param> /// <param name="PPropertypath">属性路径</param> /// <param name="PwIDthorheight">高度或宽度</param> /// <param name="Plong">持续时长</param> /// <returns></returns> public voID SetShowAction(Canvas Pcanvas,0);//设置开始时间 //添加一个在第二秒的时候Opacity透明度值为1的关键帧 SplineDoubleKeyFrame SKeyFrame = new SplineDoubleKeyFrame(); SKeyFrame.KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromSeconds(0)); SKeyFrame.Value = PwIDthorheight; dakeyframe.KeyFrames.Add(SKeyFrame); //添加一个在第四秒的时候Opacity透明度值为0.2的关键帧 SplineDoubleKeyFrame SKeyFrame1 = new SplineDoubleKeyFrame(); SKeyFrame1.KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromSeconds(Plong)); SKeyFrame1.Value = 0; dakeyframe.KeyFrames.Add(SKeyFrame1); keyFrameboard.Children.Add(dakeyframe); keyFrameboard.Begin();//隐藏故事板开始执行 }
@H_404_104@ 总结以上是内存溢出为你收集整理的Silverlight 显示隐藏动画效果全部内容,希望文章能够帮你解决Silverlight 显示隐藏动画效果所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)