当前位置: 首页 > news >正文

C# Avalonia 15- Animation- CustomEasingFunction

CustomEasingFunction.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="276" Width="600"x:Class="AvaloniaUI.CustomEasingFunction"xmlns:local="using:AvaloniaUI"Title="CustomEasingFunction"><Canvas Margin="10"><Ellipse Canvas.Left="0" Fill="Red" Width="20" Height="20"><Ellipse.Styles><Style Selector="Ellipse"><Style.Animations><Animation Duration="0:0:10" FillMode="Forward" Easing="SineEaseInOut"><KeyFrame Cue="0%"><Setter Property="(Canvas.Left)" Value="0"/></KeyFrame><KeyFrame Cue="100%"><Setter Property="(Canvas.Left)" Value="500"/></KeyFrame></Animation></Style.Animations></Style></Ellipse.Styles></Ellipse><Ellipse Canvas.Top="100" Canvas.Left="0" Fill="Red" Width="20" Height="20"><Ellipse.Styles><Style Selector="Ellipse"><Style.Animations><Animation Duration="0:0:10" FillMode="Forward"><Animation.Easing><local:RandomJitterEase Jitter="0.08"/></Animation.Easing><KeyFrame Cue="0%"><Setter Property="(Canvas.Left)" Value="0"/></KeyFrame><KeyFrame Cue="100%"><Setter Property="(Canvas.Left)" Value="500"/></KeyFrame></Animation></Style.Animations></Style></Ellipse.Styles></Ellipse></Canvas>
</Window>

CustomEasingFunction.axaml.cs代码

using Avalonia;
using Avalonia.Animation.Easings;
using Avalonia.Controls;
using System;namespace AvaloniaUI;public class RandomJitterEase : Easing
{private static readonly Random rand = new Random();public double Jitter { get; set; } = 0.05;public override double Ease(double progress){if (progress <= 0) return 0;if (progress >= 1) return 1;return Math.Clamp((rand.NextDouble() * 2 - 1) * Jitter+ progress, 0.0, 1.0);}
}
public partial class CustomEasingFunction : Window
{public CustomEasingFunction(){InitializeComponent();}
}

运行效果

image

 

http://www.hskmm.com/?act=detail&tid=17886

相关文章:

  • C#进阶
  • 包机制
  • Tensorboard的使用
  • 【Spring Boot】自定义starter
  • PrintNightmare漏洞仍未终结:深入解析PnP配置绕过与防护方案
  • Go 1.26 内置函数 new 新特性
  • 基于BP神经网络的激光焊接数据预测
  • 重要公式 - Emi
  • apt 还是 uv
  • 软件构造中的数据处理(sql) 6章
  • 树的重心(邻接表)
  • 语音芯片怎样接? 语音芯片有哪些常见接口类型?
  • 详细介绍:2025华为杯A题B题C题D题E题F题选题建议思路数学建模研研究生数学建模思路代码文章成品
  • Gitee vs. GitLab:中国开发者为何选择本土代码托管平台?
  • AtCoder Beginner Contest 424
  • ClkLog埋点分析系统-私有化部署+轻量灵活
  • 级数 - Emi
  • 线性代数 - Emi
  • 基于 Docker 的 Nginx + OpenSSL 自签名证书启用 HTTPS
  • 基于STM32的正弦波逆变器设计
  • 高校固定资产管理高效的系统——Java EE毕业设计资源包
  • ======================================分割线======================================
  • 标准卷积和空洞卷积--适应不同尺寸的输入--ASPP模块
  • 游戏在高负载场景下,整机功耗控制在多少
  • 打印机状态错误,怎么恢复正常打印?
  • 使用Ollama 0.12.2本地部署大模型,友好界面对话,开启飞行模式数据完全存在本地
  • 牛客刷题-Day5
  • 用标准版平板干翻上代Pro,小米又想学苹果了?
  • VonaJS多租户同时支持共享模式和独立模式
  • 记录一下第一次为Dify贡献插件的经历