尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

C# Avalonia 16- Animation- FrameBasedAnimation

C# Avalonia 16- Animation- FrameBasedAnimation
📅 发布时间:2026/6/19 19:32:25
C# Avalonia 16- Animation- FrameBasedAnimation

FrameBasedAnimation.axaml代码

<Window xmlns="https://github.com/avaloniaui"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"Height="396" Width="463.2"x:Class="AvaloniaUI.FrameBasedAnimation"Title="FrameBasedAnimation"><Grid Margin="3" RowDefinitions="auto,*"><StackPanel Orientation="Horizontal"><Button Margin="3" Padding="3" Click="cmdStart_Clicked">Start</Button><Button Margin="3" Padding="3" Click="cmdStop_Clicked">Stop</Button></StackPanel><Canvas Name="canvas" Grid.Row="1" Margin="3"></Canvas></Grid>
</Window>

FrameBasedAnimation.axaml.cs代码

using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.Shapes;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using Avalonia.Media;
using Shares.Avalonia;
using System;
using System.Collections.Generic;
using System.Linq;namespace AvaloniaUI;
public class EllipseInfo
{public Ellipse Ellipse { get; set; }public double VelocityY { get; set; }public bool HasStopped { get; set; }  // 当前是否停止public int BouncesRemaining { get; set; }  // 剩余弹跳次数public double MaxBounceSpeed { get; set; } // 最大反弹初速度public EllipseInfo(Ellipse ellipse, double velocityY, int bounces, double bounceSpeed){Ellipse = ellipse;VelocityY = velocityY;HasStopped = false;BouncesRemaining = bounces;MaxBounceSpeed = bounceSpeed;}
}
public partial class FrameBasedAnimation : Window
{private readonly AnimationPlayer player = new AnimationPlayer();private readonly List<EllipseInfo> ellipses = new();private readonly Random rand = new Random();private double accelerationY = 0.1;private int minStartingSpeed = 1;private int maxStartingSpeed = 50;private double speedRatio = 0.1;private int minEllipses = 20;private int maxEllipses = 100;private int ellipseRadius = 10;public FrameBasedAnimation(){InitializeComponent();player.Duration = 8;       // 整个动画总时间(秒),自动清屏player.At(0).PlayGlobal(progress =>{if (ellipses.Count == 0){player.Stop();return;}double bottomLimit = canvas.Bounds.Height - ellipseRadius * 2 - 10;foreach (var info in ellipses){double top = Canvas.GetTop(info.Ellipse);// 弹跳逻辑if (info.HasStopped){if (info.BouncesRemaining > 0 && top >= bottomLimit){// 随机弹起info.VelocityY = -rand.NextDouble() * info.MaxBounceSpeed;info.BouncesRemaining--;info.HasStopped = false; // 重新开始运动}else{Canvas.SetTop(info.Ellipse, bottomLimit);info.VelocityY = 0;continue;}}double newTop = top + info.VelocityY;info.VelocityY += accelerationY;if (newTop >= bottomLimit){Canvas.SetTop(info.Ellipse, bottomLimit);info.HasStopped = true;}else{Canvas.SetTop(info.Ellipse, newTop);}}});player.AnimationCompleted += () =>{ellipses.Clear();canvas.Children.Clear();};}private void cmdStart_Clicked(object? sender, RoutedEventArgs e){ellipses.Clear();canvas.Children.Clear();int halfCanvasWidth = (int)canvas.Bounds.Width / 2;int ellipseCount = rand.Next(minEllipses, maxEllipses + 1);for (int i = 0; i < ellipseCount; i++){var ellipse = new Ellipse{Fill = Brushes.LimeGreen,Width = ellipseRadius,Height = ellipseRadius};Canvas.SetLeft(ellipse, halfCanvasWidth + rand.Next(-halfCanvasWidth, halfCanvasWidth));Canvas.SetTop(ellipse, 0);canvas.Children.Add(ellipse);var info = new EllipseInfo(ellipse,speedRatio * rand.Next(minStartingSpeed, maxStartingSpeed),rand.Next(0, 3), // 随机弹跳次数 0~2rand.Next(1,4) //随机反弹速度1~3);ellipses.Add(info);}player.Start();}private void cmdStop_Clicked(object? sender, RoutedEventArgs e){player.Stop();ellipses.Clear();canvas.Children.Clear();}
}

运行效果

image

 

相关新闻

  • h5直播源码,如何实现一个简易播放器? - 云豹科技
  • 2025 年换热器厂家最新推荐榜单:涵盖不锈钢钛哈氏合金等材质及列管式螺旋板等类型,为企业采购提供优质选择
  • 2025 水泥墩源头厂家最新推荐排行榜:光伏 / 交通 / 围挡等多品类优选,实力品牌权威榜单发布

最新新闻

  • 合肥想养猫狗先看看,萌宠宠园探店记录 - 园友3800037
  • 厦门二手奢侈品回收怎么避坑?高净值客户必须看的三个参数 - 奢品小当家
  • 2026昆山地下室防水市场专业解析与四家服务商适配推荐 专业防水公司排名推荐(2026年6月防水补漏最新TOP权威排名) - 鼎壹万修缮说
  • FitGirl Repack Launcher:你的游戏下载管家,让找游戏变得简单有趣
  • 01人月神话阅读笔记
  • 民国老文书老照片别丢!北京记录者商行上门回收民国照片、任命书、毕业证书 - 深鉴新闻

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号