WPF按钮与窗体动画实现详解
本资源主要介绍如何在WPF(Windows Presentation Foundation)中创建按钮和窗体的动画效果,通过使用样式(Style)和故事板(Storyboard)来实现视觉上的动态变换。 在WPF中,可以利用丰富的动画功能为用户界面增添生动性。此资源中的代码示例展示了如何制作一个简单的按钮动画以及窗体关闭时的动画效果。首先,我们看到一个定义了焦点视觉风格(FocusVisual)的样式,这将改变控件获得焦点时的外观。通过设置Control.Template属性并定义一个Rectangle,我们可以自定义焦点时的边框效果。 接着,重点在于使用Storyboard来创建动画。Storyboard是一个时间线对象,它可以管理一系列动画,按照指定的时间顺序播放。在这个例子中,有一个名为"showDW"的故事板,它包含了四个DoubleAnimation,分别用于控制Canvas1的不透明度、旋转角度、缩放比例X和缩放比例Y。 - 第一个DoubleAnimation改变了Canvas1的不透明度,从0.2逐渐变为1,持续2.5秒,这可能是窗体出现或按钮按下时的淡入效果。 - 第二个DoubleAnimation调整了Canvas1的旋转角度,从70度减到0度,持续2秒,可能用作窗体关闭时的翻转效果。 - 第三个和第四个DoubleAnimation分别设置了Canvas1在X轴和Y轴上的缩放比例,从0渐变到1,同样也是2秒,但加速度比率为1,这意味着动画在开始时速度较慢,然后逐渐加速,可能用于按钮按下后的放大效果。 这些动画的组合使得按钮和窗体的交互变得更加动态和吸引人。在实际应用中,开发者可以根据需求调整动画参数,如持续时间、变化值、加速度等,以创造出各种不同的视觉效果。 通过学习这个资源,开发者可以掌握在WPF中创建自定义动画的基本方法,从而提升应用程序的用户体验。这包括理解Style、ControlTemplate、Storyboard以及DoubleAnimation等关键概念,这些是构建富有动态效果的WPF界面的基础。
<!--此样式能去除按钮点击后的虚线框-->
<Style x:Key="MyFocusVisual">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Rectangle Margin="-2" StrokeThickness="0" Stroke="Red" StrokeDashArray="1 2"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!--原始旋转出来样例-->
<Storyboard x:Key="showDW">
<DoubleAnimation Storyboard.TargetName="Canvas1"
Storyboard.TargetProperty="Opacity"
From="0.2" To="1" Duration="0:0:2.5">
</DoubleAnimation>
<DoubleAnimation Storyboard.TargetName="Canvas1"
Storyboard.TargetProperty="RenderTransform.Children[1].Angle"
From="70" To="0" Duration="0:0:2" >
</DoubleAnimation>
<DoubleAnimation Storyboard.TargetName="Canvas1"
Storyboard.TargetProperty="RenderTransform.Children[0].ScaleX"
From="0" To="1" Duration="0:0:2"
AccelerationRatio="1">
</DoubleAnimation>
<DoubleAnimation Storyboard.TargetName="Canvas1"
Storyboard.TargetProperty="RenderTransform.Children[0].ScaleY"
From="0" To="1" Duration="0:0:2"
AccelerationRatio="1">
<DoubleAnimation Storyboard.TargetName="Canvas1"
Storyboard.TargetProperty="RenderTransform.Children[0].ScaleX"
To="0.98" BeginTime="0:0:2" Duration="0:0:0.05"
DecelerationRatio="1">
</DoubleAnimation>
<DoubleAnimation Storyboard.TargetName="Canvas1"
Storyboard.TargetProperty="RenderTransform.Children[0].ScaleY"
To="0.98" BeginTime="0:0:2" Duration="0:0:0.05"
DecelerationRatio="1">
</DoubleAnimation>
<DoubleAnimation Storyboard.TargetName="Canvas1"
Storyboard.TargetProperty="RenderTransform.Children[0].ScaleX"
To="1" BeginTime="0:0:2.05" Duration="0:0:0.2"
AccelerationRatio="1">
</DoubleAnimation>
<DoubleAnimation Storyboard.TargetName="Canvas1"
Storyboard.TargetProperty="RenderTransform.Children[0].ScaleY"
To="1" BeginTime="0:0:2.05" Duration="0:0:0.2"
AccelerationRatio="1">
</DoubleAnimation>
</Storyboard>
<!--原始的旋转回去样例-->
<Storyboard x:Key="closeDW">
<DoubleAnimation Storyboard.TargetName="Canvas1"
Storyboard.TargetProperty="RenderTransform.Children[1].Angle"
To="360" Duration="0:0:1.5" >
</DoubleAnimation>
<DoubleAnimation Storyboard.TargetName="Canvas1"
Storyboard.TargetProperty="Opacity"
剩余6页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦