创建动画的指导原则
创建动画首先就要为动画选择合适的属性。指导原则如下:
- 如果希望使用动画显隐元素,使用Opacity
- 如果希望动态改变元素位置,可以考虑Canvas面板(有Canvas.Left和Canvas.Top),开销很小。也可以通过ThicknessAnimation类动态改变Margin和Padding等属性。
- 动画最常用的属性是渲染变换。如TranslateTransform/RotateTransform/ScaleTransform等。
- 动态改变元素表面一般修改Brush的属性。可以使用ColorAnimation改变颜色或其他动画对象来变换更复杂画刷的属性。
动态变换
每个元素都能以两种不同的方式使用变换:RenderTransform和LayoutTransform属性。RenderTransform效率更高。
使用变换的第一步是定义变换。例如需要按钮旋转。:
1 | <Button Content="Her Button"> |
然后添加触发器
1 | <EventTrigger RoutedEvent="Button.MouseEnter"> |
改变,使用LayoutTransform属性可以推开其他按钮
完整代码如下
1 | <Style TargetType="{x:Type Button}"> |
动态改变多个变换
组合使用变换 TransformGroup 对象设置LayoutTransform或者RenderTransform
例如文档内容旋转/扩展 并且快速淡入到视图中。
1 | <Border.RenderTransform> |
通过指定数字偏移值,动画与两个变换交互
1 | <DoubleAnimation Storyboard.TargetName="element" Storyboard.TargetProperty="RenderTransform.Children[0].ScaleX" From="0" To="1" |
下面的动画位于相同的故事板中,用于旋转内容
1 | <DoubleAnimation Storyboard.TargetName="element" |
此例细节
1 | <Window.Triggers> |
16.2 关键帧动画
skipp