微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Silverlight 显示隐藏动画效果

第一种方式:

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();//隐藏故事板开始执行         }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐