WPF:(5-4)ConcentricRingsDemo同心环动画

2024-02-06 19:10

本文主要是介绍WPF:(5-4)ConcentricRingsDemo同心环动画,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

源项目地址:https://github.com/Microsoft/...
以下是把示例转换为简要说明,同时给出实际运行效果及关键代码剖析:

ConcentricRingsDemo同心环动画效果图

如下:
clipboard.png

描述:

  • 在一个点附近中不断涌现出不同颜色的圆圈,圆圈不断变大后消散。

只有简单的代码,那么具体思路如何实现呢?

一种是利用帧数驱动(未设置)。
另一种是利用动画循环,本例是使用动画代码设定随机生成源,在中心点、尺寸、透明度上进行动画循环。

  • 帧数驱动代码
var frameTimer = new DispatcherTimer();
frameTimer.Tick += OnFrame;
frameTimer.Interval = TimeSpan.FromSeconds(1.0/60.0);
frameTimer.Start();_lastTick = Environment.TickCount;_rand = new Random(GetHashCode());
  • 利用循环方法:

CreateCircles();for循环中
具体步骤如下:
生成圆,设定随机颜色的轮廓画笔,
设定偏移量,控件添加进画布

var e = new Ellipse();
var alpha = (byte) _rand.Next(96, 192);
var colorIndex = _rand.Next(4);
e.Stroke =new SolidColorBrush(Color.FromArgb(alpha, colors[colorIndex].R, colors[colorIndex].G,colors[colorIndex].B));
e.StrokeThickness = _rand.Next(1, 4);
e.Width = 0.0;
e.Height = 0.0;
double offsetX = 16 - _rand.Next(32);
double offsetY = 16 - _rand.Next(32);MainCanvas.Children.Add(e);

设定圆在画布中的位置

e.SetValue(Canvas.LeftProperty, centerX + offsetX);
e.SetValue(Canvas.TopProperty, centerY + offsetY);

设定动画的不同继续时间和间隔时间
设定中心点动画

var duration = 6.0 + 10.0*_rand.NextDouble();
var delay = 16.0*_rand.NextDouble();var offsetTransform = new TranslateTransform();var offsetXAnimation = new DoubleAnimation(0.0, -256.0, new Duration(TimeSpan.FromSeconds(duration)))
{RepeatBehavior = RepeatBehavior.Forever,BeginTime = TimeSpan.FromSeconds(delay)
};
offsetTransform.BeginAnimation(TranslateTransform.XProperty, offsetXAnimation);
offsetTransform.BeginAnimation(TranslateTransform.YProperty, offsetXAnimation);

设置到圆的移动呈现属性

e.RenderTransform = offsetTransform;

设定尺寸动画,并和尺寸属性一起作为圆的动画方法参数

 var sizeAnimation = new DoubleAnimation(0.0, 512.0, new Duration(TimeSpan.FromSeconds(duration)))
{RepeatBehavior = RepeatBehavior.Forever,BeginTime = TimeSpan.FromSeconds(delay)
};
e.BeginAnimation(WidthProperty, sizeAnimation);
e.BeginAnimation(HeightProperty, sizeAnimation);

设定透明度动画,并和透明度属性作为圆的动画方法参数

var opacityAnimation = new DoubleAnimation(duration - 1.0, 0.0,new Duration(TimeSpan.FromSeconds(duration)))
{
BeginTime = TimeSpan.FromSeconds(delay),
RepeatBehavior = RepeatBehavior.Forever
};
e.BeginAnimation(OpacityProperty, opacityAnimation);

以上。。。

这篇关于WPF:(5-4)ConcentricRingsDemo同心环动画的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/685266

相关文章

最好用的WPF加载动画功能

《最好用的WPF加载动画功能》当开发应用程序时,提供良好的用户体验(UX)是至关重要的,加载动画作为一种有效的沟通工具,它不仅能告知用户系统正在工作,还能够通过视觉上的吸引力来增强整体用户体验,本文给... 目录前言需求分析高级用法综合案例总结最后前言当开发应用程序时,提供良好的用户体验(UX)是至关重要

基于Python实现PDF动画翻页效果的阅读器

《基于Python实现PDF动画翻页效果的阅读器》在这篇博客中,我们将深入分析一个基于wxPython实现的PDF阅读器程序,该程序支持加载PDF文件并显示页面内容,同时支持页面切换动画效果,文中有详... 目录全部代码代码结构初始化 UI 界面加载 PDF 文件显示 PDF 页面页面切换动画运行效果总结主

Qt QWidget实现图片旋转动画

《QtQWidget实现图片旋转动画》这篇文章主要为大家详细介绍了如何使用了Qt和QWidget实现图片旋转动画效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、效果展示二、源码分享本例程通过QGraphicsView实现svg格式图片旋转。.hpjavascript

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

Flutter 进阶:绘制加载动画

绘制加载动画:由小圆组成的大圆 1. 定义 LoadingScreen 类2. 实现 _LoadingScreenState 类3. 定义 LoadingPainter 类4. 总结 实现加载动画 我们需要定义两个类:LoadingScreen 和 LoadingPainter。LoadingScreen 负责控制动画的状态,而 LoadingPainter 则负责绘制动画。

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)

上回我们学到创建一个地形和一个人物,今天我们实现一下人物实现移动和跳起,依次点击,我们准备创建一个C#文件 创建好我们点击进去,就会跳转到我们的Vision Studio,然后输入这些代码 using UnityEngine;public class Move : MonoBehaviour // 定义一个名为Move的类,继承自MonoBehaviour{private Rigidbo

动画AnimationDrawable、转动

现实开发中:很多地方都用到 点击动画的特效; 本案例本人做了三个关于“动” 画 的效果; 先上图: 总体图: A: B: 1:点击图片按钮,效果是:图片闪动; 通过在xml中定义:标签:animation-list来实现点击动画的效果;  是否循环标签:oneshot ;   时间间隔标签:duration ; 要显示的图片标签:drawable ;

13 transition数组的动画使用

划重点 动画:transitiontransition-group :数组动画数组的 添加 / 删除 豆腐粉丝汤 清淡又健康 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><me

12 动画transition的使用2

划重点 Vue 动画:transition / transform在动画周期中执行动动画(上一篇是通过动画样式控制动画) 清蒸扇贝 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><

WPF入门到跪下 第十三章 3D绘图 - 3D绘图基础

3D绘图基础 四大要点 WPF中的3D绘图涉及4个要点: 视口,用来驻留3D内容3D对象照亮部分或整个3D场景的光源摄像机,提供在3D场景中进行观察的视点 一、视口 要展示3D内容,首先需要一个容器来装载3D内容。在WPF中,这个容器就是Viewport3D(3D视口),它继承自FrameworkElement,因此可以像其他元素那样在XAML中使用。 Viewport3D与其他元素相