代码创建 WPF 旋转、翻转动画(汇总)
先建立一个button
<Button Width="80" Height="60" Content="旋转" Name="trans" Click="trans_Click" Style="{x:Null}"/>
方法一:绕左上角旋转
public void Transform1()
{
RotateTransform rtf = new RotateTransform();
trans.RenderTransform = rtf;
DoubleAnimation dbAscending = new DoubleAnimation(, , new Duration (TimeSpan.FromSeconds()));
dbAscending.RepeatBehavior = RepeatBehavior.Forever;
rtf.BeginAnimation(RotateTransform.AngleProperty, dbAscending);
}
方法二:绕左上角旋转
public void Transform2()
{
RotateTransform rtf = new RotateTransform();
trans.RenderTransform = rtf;
DoubleAnimation dbAscending = new DoubleAnimation(, , new Duration(TimeSpan.FromSeconds()));
Storyboard storyboard = new Storyboard();
dbAscending.RepeatBehavior = RepeatBehavior.Forever;
storyboard.Children.Add(dbAscending);
Storyboard.SetTarget(dbAscending, trans);
Storyboard.SetTargetProperty(dbAscending, new PropertyPath("RenderTransform.Angle"));
storyboard.Begin();
}
效果如下:

截图不怎么能看出效果,这两种方法是按某个角进行旋转的。
方法三:Xaml动画,绕X中线或者Y中线翻转
<Window x:Class="Oland.HSS.InHospital.Window2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window2" Height="300" Width="300">
<Window.Resources>
<Storyboard x:Key="LoadHeadStoryboard" >
<DoubleAnimationUsingKeyFrames BeginTime="0:0:0" Duration="0:0:5"
RepeatBehavior="Forever"
Storyboard.TargetName="DesignerHead"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">
<SplineDoubleKeyFrame Value="1"/>
<SplineDoubleKeyFrame Value="-1"/>
<SplineDoubleKeyFrame Value="1"/>
</DoubleAnimationUsingKeyFrames> </Storyboard>
</Window.Resources>
<Window.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard Storyboard="{StaticResource LoadHeadStoryboard}"/>
</EventTrigger>
</Window.Triggers>
<Grid>
<Button Content="旋转" x:Name="DesignerHead" Height="40" Width="60" RenderTransformOrigin="0.4,0.5" Style="{x:Null}">
<Button.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1" ScaleY="1"></ScaleTransform>
</TransformGroup>
</Button.RenderTransform>
</Button>
</Grid>
</Window>

可设置是延X中线或者是Y中线旋转,上边那种是按左上角旋转。
方法四:第一种方式使用Xaml实现(左上)
<Button Content="旋转" Height="32" HorizontalAlignment="Left" Margin="106,176,0,0" Name="button1" VerticalAlignment="Top" Width="58" >
<Button.RenderTransform>
<RotateTransform x:Name="trans" Angle="0"/>
</Button.RenderTransform>
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation To="360" RepeatBehavior="Forever" Duration="0:0:3"
Storyboard.TargetName="trans"
Storyboard.TargetProperty="Angle"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>
效果同第一第二种方法

方法五:绕中点旋转:
<Button Content="旋转" Height="32" HorizontalAlignment="Left" Margin="106,176,0,0" Name="button1" VerticalAlignment="Top" Width="58" RenderTransformOrigin="0.5,0.5">
<Button.RenderTransform>
<RotateTransform x:Name="trans" Angle="0"/>
</Button.RenderTransform>
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<BeginStoryboard >
<Storyboard>
<DoubleAnimation From="0" To="360" RepeatBehavior="Forever" Duration="0:0:3"
Storyboard.TargetName="trans"
Storyboard.TargetProperty="Angle"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>
这段代码和上面差不多,
关键是RenderTransformOrigin,设成0.5,0.5就可以了
代码创建 WPF 旋转、翻转动画(汇总)的更多相关文章
- 代码创建 WPF 旋转动画
一.WPF窗体上有一个名为rectangle2的矩形 对应的XAML如下: <Window x:Class="WpfVideo.Window1" xmlns= ...
- WPF/WP/Silverlight/Metro App代码创建动画的思路
在2010年之前,我都是用Blend创建动画,添加触发器实现自动动画,后来写成代码创建的方式.如今Blend已经集成到Visual Studio安装镜像中了,最新的VS2015安装,Blend的操作界 ...
- wpf 中用 C# 代码创建 PropertyPath ,以对间接目标进行 Storyboard 动画.
如图,一个 Rectangle 一个 Button ,点击按钮时要通过动画完成对 Rectangle填充色的渐变动画. Xaml: 1 <Window 2 x:Class="WpfAp ...
- 【WPF学习】第五十七章 使用代码创建故事板
在“[WPF学习]第五十章 故事板”中讨论了如何使用代码创建简单动画,以及如何使用XAML标记构建更复杂的故事板——具有多个动画以及播放控制功能.但有时采用更复杂的故事板例程,并在代码中实现全部复杂功 ...
- Expression Blend 的点滴(2)--利用可视化状态创建神奇翻转动画
原文:Expression Blend 的点滴(2)--利用可视化状态创建神奇翻转动画 首先,来看下实现后的效果: 关于VisulaState VisualState 指定控件处于特定状态时的外观.例 ...
- WPF使用后台C#代码创建Grid
笔者刚刚接触WPF,菜鸟一枚,在做一个练手程序时遇到这样一个需求,创建一个新的Grid并将其添加至一个ListView中,要求Grid及其子元素应按一定顺序给Name属性赋值,直接使用XAML创建的话 ...
- iOS的view翻转动画实现--代码老,供参考
新建一个view-based模板工程,在ViewController文件中添加下面的代码,即可实现翻转效果: - (void)viewDidLoad { [super viewDidLoad]; // ...
- [WPF]如何使用代码创建DataTemplate(或者ControlTemplate)
1. 前言 上一篇文章([UWP]如何使用代码创建DataTemplate(或者ControlTemplate))介绍了在UWP上的情况,这篇文章再稍微介绍在WPF上如何实现. 2. 使用Framew ...
- 纯CSS3悬停图标旋转导航动画代码
分享一款纯CSS3悬停图标旋转导航动画代码.这是一款鼠标移到图标上动画旋转显示导航菜单.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div id="x_con ...
随机推荐
- MySQL安装及后续配置
rpm -qa | grep mysql 检查已安装的mysql版本 rpm -e --nodeps mysql-libs-5.1.71 卸载 tar -zxvf MySQL.tar.gz 解压 安 ...
- O365 Manager Plus帮助台委派介绍
O365 Manager Plus帮助台委派介绍 虽然Office 365允许您在全球任何地方工作,但它提供的管理功能十分不足.当一个组织分布在多个国家/地区时,一个管理员很难单独管理所有用户和邮箱. ...
- string所在头文件
使用string.wstring 头文件:#include <string> 命名空间:std
- this guy gonna be a daddy
时间真快,媳妇儿怀孕了两个月了. 2016年2月10日,在横峰血检后确定媳妇儿怀孕后,我心情激动得要飞起来一样,那时,我在心里告诉自己不是个孩子了,我自己即将成为孩子的父亲.当时只顾着自个儿激动,已经 ...
- selenium_unittest框架,TestCase引用
新手,纯属个人理解,有问题可以给出建议奥~谢谢. 如以下代码,每一个test的类都是一个测试方法而测试方法必须由test_xxx开头命名,非test开头可能会执行不到,执行顺序如test1,test2 ...
- jsp页面有一个注册form表单,传值的时候后台接收到的全部是null
[页面上的传值元素一定要有name属性才可在后台接受到参数的值.切记!] 此处一定要注意,form表单里面的元素,比如input元素是否和后台的requset.getparameter();中的参数名 ...
- (转)web前端知识精简
Web前端技术由 html.css 和 javascript 三大部分构成,是一个庞大而复杂的技术体系,其复杂程度不低于任何一门后端语言.而我们在学习它的时候往往是先从某一个点切入,然后不断地接触和学 ...
- Mac Terminal open app with a file opened
open -a /Applications/Sublime Text.app test.cpp
- HSmartWindowControl 之 显示图像
概述:使用Halcon在VS中的控件显示一张图片. 要点:使用了图像缩放和图像显示函数,以及鼠标滚轮响应函数. 1.创建WinForm项目 首先在VS中添加Halcon所需的控件HSmartWindo ...
- MFC中的Debug Assertion Failed 如何查找原因
编写MFC程序时经常会遇到下图所示的断言失败问题 报错对话框中给出了一个目录,是在F盘,但是查找之后会发现电脑里可能根本没有这个目录. 最后发现可以在VS的安装目录下找到这个文件: \atlmfc\s ...