WPF中的转换有:

//    在二维 x-y 坐标系内围绕指定点按顺时针方向旋转对象。
<RotateTransform />
// 在二维 x-y 坐标系中平移(移动)对象。
<TranslateTransform />
// 在 2-D x-y 坐标系统内缩放对象。
<ScaleTransform />
// 表示 2-D 倾斜。
<SkewTransform />

将转换与关键帧动画共用:

<Button
x:Name="Button01"
Grid.Row="1"
Grid.Column="2"
Width="100"
Content="Click Me"
RenderTransformOrigin="0,0">
<Button.RenderTransform>
<TransformGroup>
<RotateTransform />
<TranslateTransform />
<ScaleTransform />
<SkewTransform />
</TransformGroup>
</Button.RenderTransform>
<Button.Triggers>
<EventTrigger RoutedEvent="MouseEnter">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimationUsingKeyFrames
AutoReverse="False"
BeginTime="0:0:0.0"
Storyboard.TargetName="Button01"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(ScaleTransform.ScaleX)">
<EasingDoubleKeyFrame KeyTime="0:0:0.0" Value="1" />
<EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0.5" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
<EventTrigger RoutedEvent="MouseLeave">
<BeginStoryboard>
<Storyboard>
<DoubleAnimationUsingKeyFrames
AutoReverse="False"
Storyboard.TargetName="Button01"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(ScaleTransform.ScaleX)">
<EasingDoubleKeyFrame KeyTime="0:0:0" Value="0.5" />
<EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="1" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>

如果xaml中,去掉以下代码:

<Button.RenderTransform>
<TransformGroup>
<RotateTransform />
<TranslateTransform />
<ScaleTransform />
<SkewTransform />
</TransformGroup>
</Button.RenderTransform>

代码可以编译成功,运行便会报错,错误信息如下:

代码中的:TransformGroup是一个类,该类中封装着一个属性Children,Children是一个TransformCollection类型,就是一个集合,该集合中的元素,如下:

TransformCollection[0] = RotateTransform实例
TransformCollection[1] = TranslateTransform
TransformCollection[2] = ScaleTransform
TransformCollection[3] = SkewTransform

所以,关键帧动画中的TargetProperty属性值 ,取集合中的第三个:Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(ScaleTransform.ScaleX)"

本例中,只用到ScaleTransform缩放功能,也可以写成下面样式

            <Button.RenderTransform>
<TransformGroup>
<ScaleTransform />
</TransformGroup>
</Button.RenderTransform>
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)"

最新文章

  1. .NET平台开源项目速览(18)C#平台JSON实体类生成器JSON C# Class Generator
  2. .NET RESTful Web Services入门
  3. ios 滚动视图响应touchesBegin,touchesEnd等方法
  4. ado执行sql查询出现“发送数据流时出现算术溢出”错误
  5. HDU 5266 pog loves szh III (LCA)
  6. linux 下ffmpeg和mencoder安装
  7. 一些YY
  8. Android中的一些基础知识(二)
  9. linux下多进程的调试
  10. ural 1352. Mersenne Primes
  11. 属于自己的MES(一)概念
  12. 支付宝支付php的demo或sdk报错 Warning: openssl_sign() [function.openssl-sign]: Unknown signature algorithm. in
  13. 兄弟连学Python-Mysql的操作应用
  14. pgsql 执行建库脚本时候出现ERROR: relation &quot;xxx_id_seq&quot; does not exist
  15. 使用C#创建Windows服务 并发布Windows 服务
  16. Python变量与赋值
  17. Chapter 5 数组:为什么很多编程语言种数组都是从0开始编号?
  18. java根据地址获取百度API经纬度
  19. 2,EasyNetQ-日志记录
  20. SQL Server DATEDIFF() 函数(SQL计算时间差)

热门文章

  1. UGUI获取文本的字符内容像素宽度 【转】
  2. Mac下Apache Tomcat安装配置技巧
  3. Tomcat put 漏洞批量工具
  4. Java基础学习:3、数组
  5. K Smallest In Unsorted Array
  6. Git,GitHub与GitLab的区别
  7. SQL 之 SQL server 中 遇到字段的值为null 遇到的坑
  8. openSUSE 15.4 安装 Deepin Wine QQ
  9. C语言——函数
  10. spring boot2.3.0集成 thymelaf