WPF动画

简介: 一,使用DoubleAnimation创建动画 //1,创建剧本 Storyboard storyboard = new Storyboard(); //2,创建动画 DoubleAnimation doubleAnimation = new DoubleAnimation( ...

一,使用DoubleAnimation创建动画

//1,创建剧本
Storyboard storyboard = new Storyboard();
//2,创建动画
DoubleAnimation doubleAnimation = new DoubleAnimation(
        valueStart,//起始值
        valueEnd,//终点值
        new Duration(TimeSpan.FromMilliseconds(1000s))//动画时间域
       );
//3,Target
Storyboard.SetTarget(doubleAnimation, rect);//Target对象
Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Canvas.Left)"));//Target属性
//4,在剧本中添加动画
storyboard.Children.Add(doubleAnimation);
//5,在资源中添加剧本
if(!Resources.Contains("animation"))
{
  Resources.Add("animation", storyboard);
}
//6,开始
storyboard.Begin();

 

二,使用CompositionTarget

CompositionTarget对象可以根据每个帧回调来创建自定义动画。

1,注册事件

CompositionTarget.Rendering += new EventHandler(ReflashView);

2,事件的实现

private void ReflashView(object sender, EventArgs e) {
  double rectX = Canvas.GetLeft(rect);
  double rectY = Canvas.GetTop(rect);
  //算法自拟
  Canvas.SetLeft(rect, valueX);
  Canvas.SetTop(rect, valueY);
}

三, DispatcherTimer动画

基于界面线程的逐帧动画,与CompositionTarget动画不同,DispatcherTimer动画可以很轻松的通过Interval 来控制刷新一个对象属性的频率了。

1, 创建一个DispatchTimer

DispatcherTimer dispatcherTimer = new DispatcherTimer(DispatcherPriority.Normal);
dispatcherTimer.Tick += dispatcherTimer_Tick;
dispatcherTimer.Interval = TimeSpan.FromMilliseconds(50);
dispatcherTimer.Start();

2, 实现dispatcherTimer_Tick函数

void dispatcherTimer_Tick(object sender, EventArgs e)
{
  double rectX = Canvas.GetLeft(rect);   double rectY = Canvas.GetTop(rect);   //算法自拟   Canvas.SetLeft(rect, valueX);   Canvas.SetTop(rect, valueY);
}

 

 

目录
相关文章
|
1月前
|
C#
WPF中动画教程(DoubleAnimation的基本使用)
WPF中动画教程(DoubleAnimation的基本使用)
48 0
|
C# 前端开发
WPF加载等待动画
原文:WPF加载等待动画 原文地址:https://www.codeproject.com/Articles/57984/WPF-Loading-Wait-Adorner 界面遮罩 等待动画全局颜色 ...
3434 0
|
20天前
|
C# UED 开发者
WPF与性能优化:掌握这些核心技巧,让你的应用从卡顿到丝滑,彻底告别延迟,实现响应速度质的飞跃——从布局到动画全面剖析与实例演示
【8月更文挑战第31天】本文通过对比优化前后的方法,详细探讨了提升WPF应用响应速度的策略。文章首先分析了常见的性能瓶颈,如复杂的XAML布局、耗时的事件处理、不当的数据绑定及繁重的动画效果。接着,通过具体示例展示了如何简化XAML结构、使用后台线程处理事件、调整数据绑定设置以及利用DirectX优化动画,从而有效提升应用性能。通过这些优化措施,WPF应用将更加流畅,用户体验也将得到显著改善。
47 0
|
20天前
|
C# UED 开发者
WPF动画大揭秘:掌握动画技巧,让你的界面动起来,告别枯燥与乏味!
【8月更文挑战第31天】在WPF应用开发中,动画能显著提升用户体验,使其更加生动有趣。本文将介绍WPF动画的基础知识和实现方法,包括平移、缩放、旋转等常见类型,并通过示例代码展示如何使用`DoubleAnimation`创建平移动画。此外,还将介绍动画触发器的使用,帮助开发者更好地控制动画效果,提升应用的吸引力。
41 0
|
1月前
|
存储 C# 数据格式
WPF动画教程(PointAnimationUsingPath的使用)
WPF动画教程(PointAnimationUsingPath的使用)
25 0
|
4月前
|
C#
WPF —— 动画缩放变换
`ScaleTransform`用于二维x-y坐标系中对象的缩放,可沿X或Y轴调整。在故事板中,通过RenderTransform.ScaleX和ScaleY属性控制缩放。示例代码展示了如何设置按钮的RenderTransformOrigin、Background等属性,并通过LayoutTransform应用ScaleTransform。当鼠标进入按钮时,EventTrigger启动DoubleAnimation实现X和Y轴的缩放动画。最后,展示了如何将动画集成到自定义按钮样式中。
112 0
|
C#
WPF技术之动画系列-上下运动
本例子展现动画小球上下循环运动
196 0
|
C#
WPF特效-鱼游动动画2
原文:WPF特效-鱼游动动画2           纯代码撸动画实践2:           原图:(png格式)                                                添加Effect以及Effect动画处理后Gif效果:                                     处理: 眼部放大缩小动画; 嘴缩放动画; 尾部收缩动画;  颜色变化效果动画。
1049 0
|
C#
WPF编游戏系列 之六 动画效果(1)
原文:WPF编游戏系列 之六 动画效果(1)        本篇主要针对界面进行动画效果处理。首先在打开或关闭界面时,使其产生动态效果而不是生硬的显示或消失(如下图)。其次在鼠标放到关闭窗口图标上时,使其出现闪动效果。
686 0
|
C# 前端开发
WPF编游戏系列 之七 动画效果(2)
原文:WPF编游戏系列 之七 动画效果(2)        上一篇已经对关闭窗口图标进行了动画效果处理,本篇将对窗口界面的显示和关闭效果进行处理。由于所有的动画效果都是针对窗口界面的Canvas,所以先要为它添加一些RenderTranform属性,这些属性不要填写任何效果,后面会由Storyboard和EventTrigger为其提供。
658 0