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

C# Avalonia 15- Animation- CachingTest

CachingTest.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="600" Width="800"x:Class="AvaloniaUI.CachingTest"x:Name="window"Title="CachingTest"><Window.Resources><ArithmeticConverter x:Key="converter" /></Window.Resources><Grid Margin="5" RowDefinitions="*,auto"><Canvas Name="canvas"><Path Name="pathBackground" Stroke="DarkRed" StrokeThickness="1" ></Path><Rectangle Name="rect" Canvas.Left="10" Canvas.Top="100" Fill="Blue" Width="75" Height="75"><Rectangle.Styles><Style Selector="Rectangle"><Style.Animations><Animation Duration="0:0:10" IterationCount="Infinite"><KeyFrame Cue="0%"><Setter Property="Canvas.Left" Value="10"/></KeyFrame><KeyFrame Cue="100%"><Setter Property="Canvas.Left"Value="{Binding #window.Width, Converter={StaticResource converter}, ConverterParameter=-100}" /></KeyFrame></Animation></Style.Animations></Style></Rectangle.Styles></Rectangle></Canvas><CheckBox Grid.Row="2" Name="chkCache" Content="Enable Caching"IsChecked="False" Click="chkCache_Click"></CheckBox></Grid>
</Window>

CachingTest.axaml.cs代码

using Avalonia;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using Avalonia.Media;
using Avalonia.Media.Imaging;
using System;
using System.Text;namespace AvaloniaUI;public partial class CachingTest : Window
{public CachingTest(){InitializeComponent();int maxHeight = (int)this.Height;int maxWidth = (int)this.Width;var rand = new Random();var sb = new StringBuilder();// PathGeometry 用字符串构造sb.Append("M 0,0 ");for (int i = 0; i < 500; i++){sb.Append($"L {rand.Next(0, maxWidth)},{rand.Next(0, maxHeight)} ");}var geometry = Geometry.Parse(sb.ToString());pathBackground.Data = geometry;chkCache.Click += chkCache_Click;}private void chkCache_Click(object? sender, RoutedEventArgs e){if (chkCache.IsChecked == true){var rtb = new RenderTargetBitmap(new PixelSize((int)Bounds.Width, (int)Bounds.Height));rtb.Render(pathBackground);pathBackground.Fill = new ImageBrush(rtb);}else{pathBackground.Fill = null; // 移除缓存,恢复原始绘制}}
}

运行效果

 

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

相关文章:

  • CF838D Airplane Arrangements
  • java操作数据库中的bug
  • 事务和Spring常用注解的总结
  • 浅谈SQL应用考试,临时抱佛脚篇
  • 网络安全风险评估指南:CISO如何通过风险评估提升安全防护
  • 藏好自己,做好清理——悼念沈劫匪先生有感
  • macbook m1 安装telnet
  • 低空经济:从政策热词到生活日常——中国低空经济全景解析与杭深模式对比 - 教程
  • 指数函数的特征
  • 生猪
  • git merge driver简介
  • 在 Linux 中安装和配置 NTP 服务器和 NTP 客户端
  • Android15音频进阶之车载多音区调整解析(一百三十七)
  • 微信二次开发社群机器人接口
  • FireDAC(Master-Detail 功能)主从表查询
  • 极氪汽车火山引擎:AI数据专家“上岗”,注入“分钟级”数据洞察力
  • C++面试宝典 01 new/delete/malloc/free关系
  • Ansible + Docker 部署 MinIO 集群
  • ​​万用表与电流探头测量电流信号的技术对比分析​​
  • flink运行时架构 - --
  • k8s命令
  • wifi亮灭屏机制--系统修改
  • 自动遍历测试利器:开源工具AppCrawler 配置全解析
  • 得帆云ETL全新版本升级驱动数据高效流转
  • Windows 的图标没有及时更新
  • 拒绝 “能源糊涂账”!MyEMS 如何让中小企业能耗管理 “秒上手”?
  • 【海内外多个支持单位|学生优惠|高录用快见刊】第五届管理科学和软件工程国际学术会议(ICMSSE 2025)
  • 电天下dq123.com搜索功能全新升级,AI加持,焕新垂直行业搜索体验!
  • 中小微企业能源管理 “入门神器”:MyEMS 开源系统如何低成本实现专业级管控?
  • jinja2和角色管理和集合