当前位置: 首页 > 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.zskr.cn/news/12184.html

相关文章:

  • nginx平滑升级+location案例 - 教程
  • 深入解析:装备制造企业支撑智能制造的全生命周期数据治理实践
  • US$36 35160WT Adapter for CG Pro 9S12 Programmer
  • 【Spring Boot】自定义starter
  • PrintNightmare漏洞仍未终结:深入解析PnP配置绕过与防护方案
  • apt 还是 uv
  • US$39 CAS Mileage Reset Authorization for CGDI Prog BMW MSV80 CAS1 CAS2 CAS3 CAS3+ via OBD
  • ClkLog埋点分析系统-私有化部署+轻量灵活
  • 基于 Docker 的 Nginx + OpenSSL 自签名证书启用 HTTPS
  • PolarFire Soc System Services
  • 高校固定资产管理高效的系统——Java EE毕业设计资源包
  • 标准卷积和空洞卷积--适应不同尺寸的输入--ASPP模块
  • 7timer.info 免费天气预报对接记录
  • 用标准版平板干翻上代Pro,小米又想学苹果了?
  • 记录一下第一次为Dify贡献插件的经历
  • Visual Prompt Builder-AI 提示词可视化工具 - 详解
  • STM32H743-ARM例程2-UART命令控制LED - 实践
  • 12_TCP和UDP实现服务端和客户端的通信
  • Day22super详解
  • 2025年值得选的文件摆渡系统品牌解析
  • 分布式专题——14 RabbitMQ之集群实战 - 指南
  • QT打包工具
  • QT与Spring Boot通信:实现HTTP请求的完整指南 - 教程
  • linux docker 配置外网拉镜像
  • 实用指南:【JavaEE初阶】多线程重点知识以及常考的面试题-多线程进阶(三)
  • 阿里云边缘安全加速ESA
  • 本土项目管理工具Gitee如何助力企业数字化转型
  • 基于OPC UA协议的SIMATIC PLC通信实现
  • Transformer模型/注意力机制/目标检测/语义分割/图神经网络/强化学习/生成式模型/自监督学习/物理信息神经网络等 - 指南
  • 实用指南:解析前端框架 Axios 的设计理念与源码