背水一战 Windows 10 (15) - 动画: 缓动动画
原文:背水一战 Windows 10 (15) - 动画: 缓动动画

[源码下载]

背水一战 Windows 10 (15) - 动画: 缓动动画

作者:webabcd

介绍
背水一战 Windows 10 之 动画

  • 缓动动画 - easing

示例
演示缓动(easing)的应用
Animation/EasingAnimation.xaml

<Pagex:Class="Windows10.Animation.EasingAnimation"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="using:Windows10.Animation"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"mc:Ignorable="d"><Grid Background="Transparent"><StackPanel Margin="10 0 10 10"><StackPanel Orientation="Horizontal"><StackPanel Orientation="Horizontal"><TextBlock FontSize="24" Text="Easing Function:" VerticalAlignment="Top" /><!-- 用于选择 Easing Function --><ComboBox x:Name="cboEasingFunction" SelectionChanged="cboEasingFunction_SelectionChanged" Margin="10 0 0 0"><ComboBoxItem>BackEase</ComboBoxItem><ComboBoxItem>BounceEase</ComboBoxItem><ComboBoxItem>CircleEase</ComboBoxItem><ComboBoxItem>CubicEase</ComboBoxItem><ComboBoxItem>ElasticEase</ComboBoxItem><ComboBoxItem>ExponentialEase</ComboBoxItem><ComboBoxItem>PowerEase</ComboBoxItem><ComboBoxItem>QuadraticEase</ComboBoxItem><ComboBoxItem>QuarticEase</ComboBoxItem><ComboBoxItem>QuinticEase</ComboBoxItem><ComboBoxItem>SineEase</ComboBoxItem></ComboBox></StackPanel><StackPanel Orientation="Horizontal" Margin="10 0 0 0"><TextBlock FontSize="24" Text="Easing Mode:" VerticalAlignment="Top" /><ComboBox x:Name="cboEasingMode" SelectionChanged="cboEasingMode_SelectionChanged" Margin="10 0 0 0"><!-- 用于选择 Easing Mode --><ComboBoxItem>EaseIn</ComboBoxItem><ComboBoxItem>EaseOut</ComboBoxItem><ComboBoxItem>EaseInOut</ComboBoxItem></ComboBox></StackPanel></StackPanel><StackPanel Orientation="Horizontal" Margin="0 30 0 0"><StackPanel.Resources><Storyboard x:Name="storyboard"><!-- 用于演示缓动动画的效果 --><DoubleAnimation x:Name="aniEasingDemo"Storyboard.TargetName="easingDemo"Storyboard.TargetProperty="(Canvas.Left)"Duration="0:0:3"RepeatBehavior="Forever"From="0"To="300" /><!-- 用一个球显示缓动轨迹(X 轴代表时间) --><DoubleAnimation x:Name="aniBallX"Storyboard.TargetName="ball"Storyboard.TargetProperty="(Canvas.Left)"Duration="0:0:3"RepeatBehavior="Forever"From="0"To="100" /><!-- 用一个球显示缓动轨迹(Y 轴代表当前时间点的缓动结果值) --><DoubleAnimation x:Name="aniBallY"Storyboard.TargetName="ball"Storyboard.TargetProperty="(Canvas.Top)"Duration="0:0:3"RepeatBehavior="Forever"From="0"To="100" /></Storyboard></StackPanel.Resources><StackPanel><Canvas Name="graphContainer" RenderTransformOrigin="0,0.5" Height="100" Width="100"><Canvas.RenderTransform><ScaleTransform ScaleY="-1" /></Canvas.RenderTransform><!-- 用于显示缓动曲线 --><Canvas Name="graph" /><!-- 缓动曲线的 X 轴和 Y 轴 --><Line X1="0" Y1="0" X2="0" Y2="100" Stroke="Black" StrokeThickness="1" Width="1" Height="100" /><Line X1="0" Y1="0" X2="100" Y2="1" Stroke="Black" StrokeThickness="1" Width="100" Height="1" /><!-- 用一个球显示缓动轨迹 --><Ellipse Name="ball" Fill="Orange" Width="5" Height="5" /></Canvas></StackPanel><StackPanel Margin="30 0 0 0"><Border BorderBrush="Black" BorderThickness="1"><Canvas Width="400" Height="100"><!-- 用于演示缓动动画的效果 --><Rectangle Name="easingDemo" Width="100" Height="100" Fill="Blue" /></Canvas></Border></StackPanel></StackPanel></StackPanel></Grid>
</Page>

Animation/EasingAnimation.xaml.cs

/** 演示缓动(easing)的应用* * WinRT 支持 11 种经典的缓动:* BackEase, BounceEase, CircleEase, CubicEase, ElasticEase, ExponentialEase, PowerEase, QuadraticEase, QuarticEase, QuinticEase, SineEase* * EasingMode 有 3 种:* EaseIn, EaseOut, EaseInOut*/using Windows.Foundation;
using Windows.UI;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Media.Animation;
using Windows.UI.Xaml.Shapes;namespace Windows10.Animation
{public sealed partial class EasingAnimation : Page{public EasingAnimation(){this.InitializeComponent();this.Loaded += EasingAnimation_Loaded;}void EasingAnimation_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs e){cboEasingFunction.SelectedIndex = 0;cboEasingMode.SelectedIndex = 0;}private void cboEasingFunction_SelectionChanged(object sender, SelectionChangedEventArgs e){EasingChanged();}private void cboEasingMode_SelectionChanged(object sender, SelectionChangedEventArgs e){EasingChanged();}private void EasingChanged(){if (cboEasingFunction.SelectedIndex == -1 || cboEasingMode.SelectedIndex == -1)return;storyboard.Stop();EasingFunctionBase easingFunction = null;// 确定 Easing Functionswitch ((cboEasingFunction.SelectedItem as ComboBoxItem).Content.ToString()){case "BackEase":// Amplitude - 幅度,必须大于等于 0,默认值 1easingFunction = new BackEase() { Amplitude = 1 };break;case "BounceEase":// Bounces - 弹跳次数,必须大于等于 0,默认值 3// Bounciness - 弹跳程度,必须是正数,默认值 2easingFunction = new BounceEase() { Bounces = 3, Bounciness = 2 };break;case "CircleEase":easingFunction = new CircleEase();break;case "CubicEase":easingFunction = new CubicEase();break;case "ElasticEase":// Oscillations - 来回滑动的次数,必须大于等于 0,默认值 3// Springiness - 弹簧的弹度,必须是正数,默认值 3easingFunction = new ElasticEase() { Oscillations = 3, Springiness = 3 };break;case "ExponentialEase":easingFunction = new ExponentialEase();break;case "PowerEase":easingFunction = new PowerEase();break;case "QuadraticEase":easingFunction = new QuadraticEase();break;case "QuarticEase":easingFunction = new QuarticEase();break;case "QuinticEase":easingFunction = new QuinticEase();break;case "SineEase":easingFunction = new SineEase();break;default:break;}// 确定 Easing Modeswitch ((cboEasingMode.SelectedItem as ComboBoxItem).Content.ToString()){case "EaseIn": // 渐进easingFunction.EasingMode = EasingMode.EaseIn;break;case "EaseOut": // 渐出(默认值)easingFunction.EasingMode = EasingMode.EaseOut;break;case "EaseInOut": // 前半段渐进,后半段渐出easingFunction.EasingMode = EasingMode.EaseInOut;break;default:break;}// 用于演示缓动效果aniEasingDemo.EasingFunction = easingFunction;// 用于演示缓动轨迹aniBallY.EasingFunction = easingFunction;// 画出当前缓动的曲线图
            DrawEasingGraph(easingFunction);storyboard.Begin();}/// <summary>/// 绘制指定的 easing 的曲线图/// </summary>private void DrawEasingGraph(EasingFunctionBase easingFunction){graph.Children.Clear();Path path = new Path();PathGeometry pathGeometry = new PathGeometry();PathFigure pathFigure = new PathFigure() { StartPoint = new Point(0, 0) };PathSegmentCollection pathSegmentCollection = new PathSegmentCollection();// 0 - 1 之间每隔 0.005 计算出一段 LineSegment,用于显示此 0.005 时间段内的缓动曲线for (double i = 0; i < 1; i += 0.005){double x = i * graphContainer.Width;double y = easingFunction.Ease(i) * graphContainer.Height;LineSegment segment = new LineSegment();segment.Point = new Point(x, y);pathSegmentCollection.Add(segment);}pathFigure.Segments = pathSegmentCollection;pathGeometry.Figures.Add(pathFigure);path.Data = pathGeometry;path.Stroke = new SolidColorBrush(Colors.Black);path.StrokeThickness = 1;graph.Children.Add(path);}}
}

OK
[源码下载]

posted on 2017-09-21 09:50 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/7566969.html

背水一战 Windows 10 (15) - 动画: 缓动动画相关推荐

  1. SVG—初识3之SVG动画(缓动动画、时间轴线、时间交错)

    SVG-初识3 SVG动画 使用GSAP制作动画 缓动动画 时间轴线 时间交错 SVG动画 Transform(scale.rotate.translate .skew) 路径动画 (path) 描边 ...

  2. 匀速动画VS缓动动画(超详细)

    文章目录 匀速动画 匀速动画案例描述 匀速动画案例图示 HTML+CSS 匀速动画JS代码 匀速动画JS代码改进----函数封装 缓动动画 缓动动画案例描述 缓动动画案例图示 HTML+CSS 缓动动 ...

  3. 背水一战 Windows 10 (42) - 控件(导航类): Frame 动画

    原文:背水一战 Windows 10 (42) - 控件(导航类): Frame 动画 [源码下载] 背水一战 Windows 10 (42) - 控件(导航类): Frame 动画 作者:webab ...

  4. js简单动画:匀速动画、缓动动画、多物体动画以及透明度动画

    主要实现以下几种简单的动画效果(其实原理基本相同): 1.匀速动画:物体的速度固定 2.缓动动画:物体速度逐渐变慢 3.多物体动画 4.透明度动画 效果实现: 1.匀速动画(以物体左右匀速运动为例) ...

  5. 用缓动动画实现鼠标跟随

    鼠标跟随是为了更好的用户体验而存在,鼠标移动到某个元素的位置,一张代表鼠标的图也移到当前元素的位置,用户能更好的看到自己的鼠标位置,也能用这个做普通特效.当鼠标移动到某个位置,那张图也移动到某个位置, ...

  6. canvas系列教程07 ——捕获、拖拽、抛掷、缓动动画、弹性动画

    捕获物体 多边形以及不规则图形的捕获非常复杂,采用的方法是分离轴定理(SAT)和最小平移向量(MTV).这里不展开介绍,有兴趣的小伙伴可以自行搜索了解一下.下面来介绍一下矩形和圆的捕获. 矩形的捕获 ...

  7. 【JavaScript】缓动动画、网页轮播图

    缓动动画 动画函数封装 1.1 动画实现原理 缓动动画 1.1 缓动效果原理 1.2 动画函数多个目标值之间移动 1.3 动画函数添加回调函数 1.4 动画函数封装到单独JS文件里面 案例:京东侧边栏 ...

  8. 怎样取消Windows 10的虚拟桌面切换动画和窗口动画

    怎样取消Windows 10的虚拟桌面切换动画和窗口动画 对于晕3D的人来说这是真的要命. 步骤: 在"这台电脑"上点击右键(如bai何在Win10桌面上显示"du这台电 ...

  9. 缓动动画_核心动画概念:缓入缓出

    缓动动画 With the arrival of CSS transitions, animation is now completely at home on web pages. In anima ...

最新文章

  1. 前端相关html和css
  2. NBT:噬菌体激发根际防御军团(附视频)
  3. 皮一皮:这是直男的鬼才逻辑?
  4. 散记 ~ 2016-09-23
  5. 【TensorFlow】笔记2:深层神经网络
  6. python 为何要学16进制,从十六进制Python中的补
  7. HDU - 6185 Covering(暴搜+递推+矩阵快速幂/杜教BM)
  8. Angular jasmine TestBed.configureTestingModule的工作原理
  9. 阿里大鱼短信介入demo分享
  10. 淘宝CSV每个字段的数据容量原来有限制的
  11. c语言dp算法,C++动态规划dp算法题
  12. 区块链发展迎来新机遇
  13. 小程序Git版本管理
  14. CRM系统更换服务器,CRM系统三种常见安装实施解决方式
  15. C#,VB.NET如何将Word转换为PDF和Text
  16. 多次引用同一脚注或尾注
  17. 英语foteball足球foteball单词
  18. cad零点坐标标注lisp_CAD_XY坐标标注AUTO_LISP程序
  19. FCPX插件:10组马赛克方格图像组合展示动画预设Mosaic Animation
  20. “金蝶KIS记账王”双11五折特惠

热门文章

  1. C# Keywords - as
  2. Visual Studio 2005 插件编程(代码行数统计插件)之一
  3. TCP三次握手的原理及***手段
  4. Flink SQL Client实现CDC实验
  5. hbase启动后在log中出现cannot get log writer
  6. 关于对Caffe适用场景的思考
  7. Adam是RmsProp和momentum算法的结合(列表比较)
  8. python中urllib.quote出现KeyError
  9. 鼠标 ArcBall 局部坐标系 旋转模型
  10. oracle asm 异机挂载,oracle 异机恢复 从asm到文件系统成功实例