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

Avalonia常用小控件Charts

1.项目下载地址:https://gitee.com/confusedkitten/avalonia-demo
2.UI库Semi.Avalonia,项目地址  https://github.com/irihitech/Semi.Avalonia

3.Charts库,LiveChartsCore.SkiaSharpView.Avalonia,Nuget获取只有预览库,也没找到别的啥好用的库

4.样式预览:

5.Charts.axaml

<UserControl 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"mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"xmlns:lvc="using:LiveChartsCore.SkiaSharpView.Avalonia"xmlns:vm="using:AvaloniaDemo.ViewModels"x:Class="AvaloniaDemo.Pages.Charts"x:DataType="vm:StatisticsViewModel"><Grid RowDefinitions="*,*"><lvc:PieChart Name="ryredpie" FontFamily="Microsoft YaHei" Series="{Binding DamageSeries}" LegendPosition="Right" ></lvc:PieChart><lvc:CartesianChart  Name="ryredaxisx" Grid.Row="1"  Series="{Binding VictorySeries}" XAxes="{Binding VictoryXAxes}"><lvc:CartesianChart.Tooltip><vm:CustomTooltip></vm:CustomTooltip></lvc:CartesianChart.Tooltip></lvc:CartesianChart></Grid>
</UserControl>

6.Charts.axaml.cs 

using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using AvaloniaDemo.ViewModels;
using LiveChartsCore.Measure;
using LiveChartsCore.SkiaSharpView.Painting;
using LiveChartsCore.SkiaSharpView.SKCharts;
using SkiaSharp;
using System.Reflection.Metadata;namespace AvaloniaDemo.Pages;public partial class Charts : UserControl
{public const string DefaultFontFamily = "Microsoft YaHei";private StatisticsViewModel viewModel = new StatisticsViewModel(new SolidColorPaint(SKColor.Parse("#4992FF")));public Charts(){InitializeComponent();DataContext = viewModel;InitLegend();}/// <summary>/// 改图例字体,默认不支持中文/// </summary>private void InitLegend(){try{if (ryredpie.Legend is SKDefaultLegend skDefaultLegend){skDefaultLegend.TextSize = 13;if (skDefaultLegend.FontPaint is Paint paint){paint.FontFamily = Constant.DefaultFontFamily;paint.Color = new SKColor(255, 255, 255);}}if (ryredpie.Tooltip is SKDefaultTooltip skDefaultTooltip){if (skDefaultTooltip.FontPaint is Paint paint){paint.FontFamily = Constant.DefaultFontFamily;paint.Color = new SKColor(255, 255, 255);}}ryredpie.TooltipPosition = TooltipPosition.Right;}catch { }}
}

 7.StatisticsViewModel.cs

using LiveChartsCore.Drawing;
using LiveChartsCore.SkiaSharpView.Painting;
using LiveChartsCore.SkiaSharpView;
using LiveChartsCore;
using SkiaSharp;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Reflection.Metadata;
using System.Text;
using System.Threading.Tasks;namespace AvaloniaDemo.ViewModels
{public class StatisticsViewModel : ViewModelBase{SolidColorPaint _solidColor { get; set; } = new SolidColorPaint(SKColor.Parse("#4992FF"));public StatisticsViewModel(SolidColorPaint solidColor){_solidColor = solidColor;((ColumnSeries<int>)_VictorySeries.ElementAt(0)).Fill = _solidColor;}public StatisticsViewModel(){}/// <summary>/// 饼图内径/// </summary>public static int PieInnerRadius = 35;#region 统计public Axis[] VictoryXAxes { get; set; } ={new Axis{Labels = new[] { "正常", "轻伤", "中伤", "重伤", "死亡" },LabelsRotation = 0,LabelsPaint=new SolidColorPaint(new SKColor(255, 255, 255)){FontFamily="Microsoft YaHei",},TextSize=12,LabelsAlignment=Align.Middle,TicksPaint = new SolidColorPaint(new SKColor(35, 35, 35)),TicksAtCenter = true,MinStep = 1,ForceStepToMin = true,}};private ObservableCollection<ISeries> _VictorySeries = new ObservableCollection<ISeries>{new ColumnSeries<int> { Values = new int[] { 5,8,1,0,9 },Fill=  new SolidColorPaint(SKColor.Parse("#4992FF"))},};private ISeries[] _DamageSeries = new ISeries[]{new PieSeries<int> { Values = new int[] { 2 }, Name = "正常" ,InnerRadius=PieInnerRadius, Fill=  new SolidColorPaint(SKColor.Parse("#008000"))},new PieSeries<int> { Values = new int[] { 4 }, Name = "轻伤" ,InnerRadius=PieInnerRadius, Fill=  new SolidColorPaint(SKColor.Parse("#D2C86B")) },new PieSeries<int> { Values = new int[] { 1 }, Name = "中伤" ,InnerRadius=PieInnerRadius, Fill=  new SolidColorPaint(SKColor.Parse("#03AEDE")) },new PieSeries<int> { Values = new int[] { 4 }, Name = "重伤" ,InnerRadius=PieInnerRadius, Fill=  new SolidColorPaint(SKColor.Parse("#C13530")) },new PieSeries<int> { Values = new int[] { 3 }, Name = "死亡" ,InnerRadius=PieInnerRadius, Fill=  new SolidColorPaint(SKColor.Parse("#696969")) }};public ObservableCollection<ISeries> VictorySeries{get => _VictorySeries;set => RaiseAndSetIfChanged(ref _VictorySeries, value);}public ISeries[] DamageSeries{get => _DamageSeries;set => RaiseAndSetIfChanged(ref _DamageSeries, value);}#endregion}
}

相关文章:

Avalonia常用小控件Charts

1.项目下载地址&#xff1a;https://gitee.com/confusedkitten/avalonia-demo 2.UI库Semi.Avalonia&#xff0c;项目地址 https://github.com/irihitech/Semi.Avalonia 3.Charts库&#xff0c;LiveChartsCore.SkiaSharpView.Avalonia&#xff0c;Nuget获取只有预览库&#x…...

【Hugging Face】管理 huggingface_hub 缓存系统

摘要 这篇文档介绍了Hugging Face Hub的缓存系统。该系统旨在提供一个中央缓存,以便不同版本的文件可以被下载和缓存。缓存系统将文件组织成模型、数据集和空间等不同的目录,每个目录包含特定类型的文件。系统确保如果文件已经下载并更新,除非明确要求,否则不会再次下载。…...

Python学习基础笔记六十六——对象的方法

我们已经学习到的对象类型&#xff1a; 整数类型的对象 字符串类型的对象 列表类型的对象 元组类型的对象 对象通常都有属于自己的方法&#xff08;method&#xff09; 调用对象的方法和调用函数差不多&#xff0c;只要在前面加上所属对象的一个点。 var1 [1, 2, 3,4, 5,…...

建立一个新的高阶数学教授模式,知其然,知其用,知其之所以然,知其所以然

1. 传统常用的模式 概念&#xff0c;性质&#xff0c;定理&#xff0c;定理证明&#xff0c;定理应用&#xff1b; 这个学习模式挺好的&#xff0c;但是定理证明过程往往很冗长&#xff0c;而且不易记忆&#xff0c;也就是说&#xff0c;即使推导了定理&#xff0c;初学者也记…...

AtCoder ABC324G 启发式合并

题意 传送门 AtCoder ABC324G Generate Arrays 题解 逆则操作顺序考虑&#xff0c;可以看作至多 n n n 个联通分量不断合并的过程&#xff0c;此时使用启发式合并&#xff0c;即规模较小的连通分量向规模较大的连通分量合并&#xff0c;以单个元素合并为基本运算&#xff0…...

SpringBootCMS漏洞复现分析

SpringBootCMS&#xff0c;极速开发&#xff0c;动态添加字段&#xff0c;自定义标签&#xff0c;动态创建数据库表并crud数据&#xff0c;数据库备份、还原&#xff0c;动态添加站点(多站点功能)&#xff0c;一键生成模板代码&#xff0c;让您轻松打造自己的独立网站&#xff…...

iOS- flutter flavor 多环境Configurations配置

一、点击PROJECT的Runner&#xff0c;选择Info选项&#xff0c;在Configurations下方的号添加不同环境的配置&#xff0c;如下图&#xff1a; 二、选择TAGETS的Runner项目&#xff0c;选择Build Settings选项&#xff0c;在输入框输入package&#xff0c;为不同环境配置相应的…...

【PyTorchTensorBoard实战】GPU与CPU的计算速度对比(附代码)

0. 前言 按照国际惯例&#xff0c;首先声明&#xff1a;本文只是我自己学习的理解&#xff0c;虽然参考了他人的宝贵见解&#xff0c;但是内容可能存在不准确的地方。如果发现文中错误&#xff0c;希望批评指正&#xff0c;共同进步。 本文基于PyTorch通过tensor点积所需要的时…...

npm 常用指令总结

1. 初始化包 一个存放了代码的文件夹,如果里面有 package.json 文件,则可以把这个文件夹称之为包。 npm init -y 注意: 由于包名不能有中文,不能有大写,不能和未来要下载的包重名. 所以我们快速初始化包时,我们的文件夹也不能违反前面说的规则.(因为默认会将文件夹的名称,作…...

布朗大学发现GPT-4存在新问题,可通过非常见语言绕过限制

&#x1f989; AI新闻 &#x1f680; 布朗大学发现GPT-4存在新漏洞&#xff0c;可通过非常见语言绕过限制 摘要&#xff1a;布朗大学计算机科学研究人员发现了OpenAI的GPT-4存在新漏洞&#xff0c;利用不太常见的语言如祖鲁语和盖尔语可以绕过各种限制。研究人员测试了GPT-4对…...

ESP32网络编程-TCP客户端数据传输

TCP客户端数据传输 文章目录 TCP客户端数据传输1、IP/TCP简单介绍2、软件准备3、硬件准备4、TCP客户端实现本文将详细介绍在Arduino开发环境中,实现一个ESP32 TCP客户端,从而达到与TCP服务器数据交换的目标。 1、IP/TCP简单介绍 Internet 协议(IP)是 Internet 的地址系统,…...

微信小程序入门级

目录 一.什么是小程序&#xff1f; 二.小程序可以干什么&#xff1f; 三.入门使用 3.1. 注册 3.2. 安装 3.3.创建项目 3.4.项目结构 3.5.应用 好啦今天就到这里了&#xff0c;希望能帮到你哦&#xff01;&#xff01;&#xff01; 一.什么是小程序&#xff1f; 微信小程…...

博客文档续更(二)

十五、博客前台模块-个人信息 1. 接口分析 进入个人中心的时候需要能够查看当前用户信息。请求不需要参数 请求方式 请求地址 请求头 GET /user/userInfo 需要token请求头 响应格式 {"code":200,"data":{"avatar":"头像的网络地址…...

Centos切换yum源

Centos切换yum源 常用命令 #查看内核/操作系统/CPU信息 uname -a #查看yum源 yum list repolist all切换步骤 1.备份yum源文件 cp -a /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak2.下载新的CentOS-Base.repo文件到/etc/yum.repos.d/目录下 …...

milvus和相似度检索

流程 milvus的使用流程是 创建collection -> 创建partition -> 创建索引(如果需要检索) -> 插入数据 -> 检索 这里以Python为例, 使用的milvus版本为2.3.x 首先按照库&#xff0c; python3 -m pip install pymilvus Connect from pymilvus import connections c…...

龙迅LT7911UXC 是一款高性能TYPE-C/DP/EDP转换四端口MIPI/LVDS的芯片,还支持图像处理

龙迅LT7911UXC 1.描述&#xff1a; LT7911UXC是一款用于VR/显示应用的高性能Type-C/DP1.4a到MIPI或LVDS芯片。HDCP RX作为 HDCP中继器的上游端&#xff0c;可以与其他芯片的HDCP TX协同工作&#xff0c;实现中继器的功能。对于DP1.4a 输入&#xff0c;LT7911UXC可以配置为1…...

TOR(Top of Rack)

TOR TOR&#xff08;Top of Rack&#xff09;指的是在每个服务器机柜上部署1&#xff5e;2台交换机&#xff0c;服务器直接接入到本机柜的交换机上&#xff0c;实现服务器与交换机在机柜内的互联。虽然从字面上看&#xff0c;Top of Rack指的是“机柜顶部”&#xff0c;但实际T…...

使用asp.net core web api创建web后台,并连接和使用Sql Server数据库

前言&#xff1a;因为要写一个安卓端app&#xff0c;实现从服务器中获取电影数据&#xff0c;所以需要搭建服务端代码&#xff0c;之前学过C#&#xff0c;所以想用C#实现服务器段代码用于测试&#xff0c;本文使用C#语言&#xff0c;使用asp.net core web api组件搭建服务器端&…...

LaTeX 公式与表格绘制技巧

LaTeX 公式与绘图技巧公式基本可以分为 单一公式单一编号单一公式按行编号单一公式多个子编号单一公式部分子编号分段公式现在给出各自的代码单一公式单一编号 公式1&#xff1a;equationaligned\begin{equation}\begin{aligned}a&bc\\b&a2\\c&b-3\end{aligned}\en…...

Spring Cloud--Nacos+@RefreshScope实现配置的动态更新

原文网址&#xff1a;Spring Cloud--NacosRefreshScope实现配置的动态更新_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍SpringCloud整合Nacos使用RefreshScope实现动态更新配置。 官网 Nacos Spring Cloud 快速开始 动态更新的介绍 动态更新的含义&#xff1a;修改应…...

如何快速上手MoMask:面向初学者的3D人体运动生成完整指南

如何快速上手MoMask&#xff1a;面向初学者的3D人体运动生成完整指南 【免费下载链接】momask-codes Official implementation of "MoMask: Generative Masked Modeling of 3D Human Motions (CVPR2024)" 项目地址: https://gitcode.com/gh_mirrors/mo/momask-code…...

2026年江苏省职业院校技能大赛(学生组)信息安全管理与评估(技能操作阶段)竞赛样题

2026年江苏省职业院校技能大赛&#xff08;学生组&#xff09;信息安全管理与评估&#xff08;技能操作阶段&#xff09;竞赛样题 文章目录2026年江苏省职业院校技能大赛&#xff08;学生组&#xff09;信息安全管理与评估&#xff08;技能操作阶段&#xff09;竞赛样题任务1&a…...

bully使用教程

bully是一款用于破解Wi-Fi Protected Setup&#xff08;WPS&#xff09;的工具&#xff0c;主要通过暴力破解WPS PIN码来获取无线网络的访问权限。WPS是一种简化Wi-Fi设备连接的协议&#xff0c;由于其设计缺陷&#xff0c;使得通过暴力破解PIN码来获取网络密钥成为可能。bully…...

打造轻量级Windows系统:Tiny11Builder深度应用指南

打造轻量级Windows系统&#xff1a;Tiny11Builder深度应用指南 【免费下载链接】tiny11builder Scripts to build a trimmed-down Windows 11 image. 项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder 价值定位&#xff1a;解决三大系统痛点 你的Windo…...

终极指南:如何快速找回Chrome浏览器保存的所有密码

终极指南&#xff1a;如何快速找回Chrome浏览器保存的所有密码 【免费下载链接】chromepass Get all passwords stored by Chrome on WINDOWS. 项目地址: https://gitcode.com/gh_mirrors/chr/chromepass 你是否曾经因为忘记Chrome浏览器中保存的重要密码而束手无策&…...

Vue 3 响应式系统的解构艺术:深入剖析 toRef 与 toRefs

Vue 3 响应式系统的解构艺术&#xff1a;深入剖析 toRef 与 toRefs 在 Vue 3 的 Composition API 中&#xff0c;响应式系统是其核心魅力之一。ref 和 reactive 为我们提供了强大的数据响应能力&#xff0c;但在实际开发中&#xff0c;尤其是在复杂的组件逻辑和组合式函数&…...

Hunyuan-MT-7B实战教程:OpenWebUI插件开发——添加术语库与记忆功能

Hunyuan-MT-7B实战教程&#xff1a;OpenWebUI插件开发——添加术语库与记忆功能 1. 项目背景与目标 Hunyuan-MT-7B作为腾讯混元开源的70亿参数多语翻译模型&#xff0c;在WMT2025竞赛中斩获30项第一&#xff0c;支持33种语言双向互译&#xff0c;包括5种中国少数民族语言。这…...

嵌入式C语言变量初始化技术详解

## 1. 嵌入式C语言变量初始化技术详解### 1.1 初始化的重要性与基本原则在嵌入式系统开发中&#xff0c;变量初始化是防止未定义行为的关键步骤。由于嵌入式编译器特性的差异&#xff0c;未初始化的变量可能包含随机值&#xff0c;导致系统出现不可预测的行为。根据变量类型的不…...

3步解决Windows驱动臃肿难题:DriverStore Explorer让系统空间释放效率提升80%

3步解决Windows驱动臃肿难题&#xff1a;DriverStore Explorer让系统空间释放效率提升80% 【免费下载链接】DriverStoreExplorer Driver Store Explorer [RAPR] 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 诊断系统存储异常 "为什么我的C盘…...

智能提取视频转文档:自动化工具提升内容处理效率

智能提取视频转文档&#xff1a;自动化工具提升内容处理效率 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 在数字化学习与办公场景中&#xff0c;视频内容提取已成为知识管理的重要…...