WPF 各种基础动画实现
C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media.Animation;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes; namespace AnimationTest
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DoubleAnimation a = new DoubleAnimation();//定义
a.RepeatBehavior = new RepeatBehavior();//重复次数,延迟不重复
//a.RepeatBehavior = new RepeatBehavior(TimeSpan.Parse("0:0:15"));//整个动画持续时间,中途停止动画
//a.RepeatBehavior = RepeatBehavior.Forever;//无限重复
a.BeginTime=TimeSpan.Parse("0:0:1");//延迟开始时间
//a.SpeedRatio = 2;//动画速度快2倍,影响TimeSpan.Parse
//a.AccelerationRatio = 0.33;//加速阶段从时间百分比0%到33%
//a.DecelerationRatio = 0.33;//减速阶段从时间百分比100%-33%到100%;
//a.IsCumulative = true;//仅与RepeatBehavior一起使用在a.By下50-150-50跳150-200-150
//a.IsAdditive = true;//获取属性默认值,从默认值开始动画
//a.FillBehavior = FillBehavior.Stop;//动画完之后恢复原始值
//a.From = 50;//起始,若默认值不是50则跳到50在进行动画
a.AutoReverse = true;//往返
//a.To = 100;
a.By = ;//等于a.To = 100 + a.Form;
a.Duration = new Duration(TimeSpan.Parse("0:0:5"));//花费时间
b.BeginAnimation(Button.WidthProperty,a);//调用开始
}
}
}
XMAL
<Window x:Class="AnimationTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="" Width="">
<Window.Resources>
<Style x:Key="bt1" TargetType="{x:Type Button}">
<Setter Property="Background" Value="Yellow"/>
<Style.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard TargetProperty="Width">
<DoubleAnimation To="" Duration="0:0:5" AutoReverse="True" IsAdditive="True"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<Canvas Margin="12,12,359,187">
<Button x:Name="b" Width="">
CS
</Button>
<Button Canvas.Top="" Width="" Style="{StaticResource ResourceKey=bt1}">
XAML
</Button>
<Button Canvas.Top="">
Color
<Button.Background>
<LinearGradientBrush>
<GradientStop Color="Blue" Offset=""/>
<GradientStop Color="Black" Offset="0.5"/>
<GradientStop Color="Blue" Offset=""/>
</LinearGradientBrush>
</Button.Background>
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Loaded">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard >
<ColorAnimation From="Black" To="White" Duration="0:0:2" AutoReverse="True"
Storyboard.TargetProperty="Background.GradientStops[1].Color"
RepeatBehavior="Forever"/>
<DoubleAnimation From="" To="" Duration="0:0:2" AutoReverse="True"
Storyboard.TargetProperty="Background.GradientStops[1].Offset"
RepeatBehavior="Forever"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Button.Triggers>
</Button>
<Button Canvas.Top="" Canvas.Left="">
Color
<Button.Background>
<LinearGradientBrush>
<GradientStop Color="Blue" Offset=""/>
<GradientStop Color="White" Offset="0.5"/>
<GradientStop Color="Blue" Offset=""/>
</LinearGradientBrush>
</Button.Background>
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Loaded">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation From="" To="" Duration="0:0:2" AutoReverse="True"
Storyboard.TargetProperty="Background.GradientStops[1].Offset"
RepeatBehavior="Forever"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Button.Triggers>
</Button>
</Canvas>
<Canvas Margin="161,12,114,174">
<Canvas.Triggers>
<EventTrigger RoutedEvent="Canvas.Loaded">
<BeginStoryboard>
<Storyboard TargetName="p2" TargetProperty="Opacity">
<DoubleAnimation From="" To="" AutoReverse="True" RepeatBehavior="Forever" Duration="0:0:5"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Canvas.Triggers>
<Image Name="p1" Source="/AnimationTest;component/Images/p1.bmp" />
<Image Name="p2" Source="/AnimationTest;component/Images/p2.bmp" />
</Canvas>
<Canvas Margin="400,12,12,264" Background="Black" TextBlock.Foreground="White" TextBlock.FontSize="">
<Canvas.Triggers>
<EventTrigger RoutedEvent="Canvas.Loaded">
<BeginStoryboard>
<Storyboard TargetProperty="Opacity" RepeatBehavior="Forever">
<DoubleAnimation Storyboard.TargetName="title1" BeginTime="0:0:2"
From="" To="" Duration="0:0:2" AutoReverse="True"/>
<DoubleAnimation Storyboard.TargetName="title2" BeginTime="0:0:6"
From="" To="" Duration="0:0:2" AutoReverse="True"/>
<DoubleAnimation Storyboard.TargetName="title3" BeginTime="0:0:10"
From="" To="" Duration="0:0:2" AutoReverse="True"/>
<DoubleAnimation Storyboard.TargetName="title4" BeginTime="0:0:14"
From="" To="" Duration="0:0:2" AutoReverse="True"/>
<DoubleAnimation Storyboard.TargetName="title5" BeginTime="0:0:18"
From="" To="" Duration="0:0:2" AutoReverse="True"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Canvas.Triggers>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Opacity="" Name="title1">title1</TextBlock>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Opacity="" Name="title2">title2</TextBlock>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Opacity="" Name="title3">title3</TextBlock>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Opacity="" Name="title4">title4</TextBlock>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Opacity="" Name="title5">title5</TextBlock>
</Canvas>
<Canvas Margin="0,144,12,89" Background="Black">
<Image Source="/AnimationTest;component/Images/1.bmp" Height="" Width="">
<Image.Triggers>
<EventTrigger RoutedEvent="Image.Loaded">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="(Canvas.Left)"
From="" To="" Duration="0:0:9" RepeatBehavior="Forever" AutoReverse="True"/>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Canvas.Top)"
Duration="0:0:9" RepeatBehavior="Forever" AutoReverse="True">
<LinearDoubleKeyFrame Value="" KeyTime="0:0:0"/>
<LinearDoubleKeyFrame Value="" KeyTime="0:0:1"/>
<LinearDoubleKeyFrame Value="" KeyTime="0:0:2"/>
<LinearDoubleKeyFrame Value="" KeyTime="0:0:3"/>
<SplineDoubleKeyFrame Value="" KeySpline="0,1 1,0" KeyTime="0:0:4"/>
<SplineDoubleKeyFrame Value="" KeySpline="0,1 1,0" KeyTime="0:0:5"/>
<SplineDoubleKeyFrame Value="" KeySpline="0,1 1,0" KeyTime="0:0:6"/>
<DiscreteDoubleKeyFrame Value="" KeyTime="0:0:7"/>
<DiscreteDoubleKeyFrame Value="" KeyTime="0:0:8"/>
<DiscreteDoubleKeyFrame Value="" KeyTime="0:0:9"/>
<!--KeyTime省略则匀速动画,也可以用百分比设值、Paced速率-->
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Image.Triggers>
</Image>
</Canvas>
<Canvas Margin="400,67,66,223" Background="Black" TextBlock.Foreground="White">
<TextBlock Width="" Height="" Text="play">
<TextBlock.Triggers>
<EventTrigger RoutedEvent="Loaded">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<StringAnimationUsingKeyFrames Storyboard.TargetProperty="Text" Duration="0:0:5" RepeatBehavior="Forever" AutoReverse="True">
<DiscreteStringKeyFrame Value="play"/>
<DiscreteStringKeyFrame Value="Play"/>
<DiscreteStringKeyFrame Value="PLay"/>
<DiscreteStringKeyFrame Value="PLAy"/>
<DiscreteStringKeyFrame Value="PLAY"/>
<DiscreteStringKeyFrame Value="PLAY"/>
</StringAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</TextBlock.Triggers>
</TextBlock>
</Canvas>
</Grid>
</Window>
源自《WPF 揭秘》一书
WPF 各种基础动画实现的更多相关文章
- WPF 画线动画效果实现
原文:WPF 画线动画效果实现 弄了将近三天才搞定的,真是艰辛的实现. 看了很多博客,都太高深了,而且想要实现的功能都太强大了,结果基础部分一直实现不了,郁闷啊~ 千辛万苦终于找到了一个Demo,打开 ...
- iOS开发UI篇—核心动画(基础动画)
转自:http://www.cnblogs.com/wendingding/p/3801157.html 文顶顶 最怕你一生碌碌无为 还安慰自己平凡可贵 iOS开发UI篇—核心动画(基础动画) iOS ...
- WPF中的动画——(三)时间线(TimeLine)
WPF中的动画——(三)时间线(TimeLine) 时间线(TimeLine)表示时间段. 它提供的属性可以让控制该时间段的长度.开始时间.重复次数.该时间段内时间进度的快慢等等.在WPF中内置了如下 ...
- HT for Web基础动画介绍
在上一篇<基于HT for Web矢量实现3D叶轮旋转>一文中,我略微提了下HT for Web基础动画的相关用法,但是讲得不深入,今天就来和大家分享下HT for Web基础动画的相关介 ...
- 核心动画基础动画(CABasicAnimation)关键帧动画
1.在iOS中核心动画分为几类: 基础动画(CABasicAnimation) 关键帧动画(CAKeyframeAnimation) 动画组(CAAnimationGroup) 转场动画(CATran ...
- WPF编程学习——动画
前言 使用动画,是增强用户体验的一种有效的手段.合理的动画,可以让应用程序的界面看起来更加自然.真实.流畅.舒适,更有效地向用户展现信息,用户也更容易接受.同时也增加了软件使用的乐趣,提高用户粘度.( ...
- Core Animation中的基础动画
基础动画 在开发过程中很多情况下通过基础动画就可以满足开发需求,前面例子中使用的UIView代码块进行图像放大缩小的演示动画也是基础动画(在iOS7 中UIView也对关键帧动画进行了封装),只是UI ...
- jQuery里面的常用的事件和基础动画的实现
一:了解jquery里面常用的事件 二:了解基础动画的实现 1:加载DOM 在JavaScript中使用window.onload事件作为窗体加载事件(它在页面所有数据加载完成之后才会执行) 在jQu ...
- Core Animation 动画的使用:关键帧动画、基础动画、动画组
首先让我们了解下什么是 Core Animation,Core Animation 为核心动画,他为图形渲染和动画提供了基础.使用核心动画,我们只需要设置起点.终点.关键帧等一些参数,剩下的工作核心动 ...
随机推荐
- Delphi 实现无窗口移动(详细使用WM_NCHITTEST和PtInRect API进行测试)
procedure imgListMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer) ...
- Find命令, find用法,
Find命令 用法示例:查找HOME目录下大于1M小于10M的文件$ find ~ -size +1M -size -10M 15个小时这一时刻修改的文件:find . -mmin 900 | xar ...
- Esper学习之四:Context
上周末打球实在太累了,就没来得及更新,只是列了个提纲做做准备,发现Context还是有很多内容的.结果也花了不少时间才写完,所以这篇需要各位慢慢消化,并且最好多写几个例子加深理解. 如果有不了解Esp ...
- Struts2 学习笔记18 拦截器原理分析
我们来进行一下拦截器的原理分析,从Struts2的源代码开始,然后我们手动创建一个项目进行模拟.(源代码需要下载然后添加好才能看到)我们可以用Debug来读源码. 从doFilter开始执行,流程如图 ...
- Swift - 搜索条(UISearchBar)的用法
1,搜索条Options属性还可设置如下功能样式: Shows Search Results Button:勾选后,搜索框右边显示一个圆形向下的按钮,单击会发送特殊事件. Shows Bookmark ...
- CloseHandle(),TerminateThread(),ExitThread()的差别
线程的handle用处: 线程的handle是指向"线程的内核对象"的,而不是指向线程本身.每一个内核对象仅仅是内核分配的一个内存块,而且仅仅能由内核訪问.该内存块是一种数据结构, ...
- 显示形状回归算法(ESR)代码介绍
源地址:http://www.thinkface.cn/thread-3704-1-6.html 人脸对齐包括两个部分,分别为训练部分和测试部分.所有的代码基于opencv2.0.(一)训练阶段Ste ...
- 绘制FastMM内存分配流程图(小块内存分配)
http://blog.csdn.net/henreash/article/details/38751353
- 利用jquery+iframe做一个ajax上传效果
以下是自学it网--中级班上课笔记 网址:www.zixue.it html页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict ...
- Mac OS提示# 14:自己定义文件图标
本教程的其余部分再一次错过了方法,和一些使用提示,做一些额外的,我们希望对大家有帮助. 自己定义图标 对于Mac OSX用户来说,Dashboard,Dock栏,壁纸以及各种键盘触摸板的快 ...