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}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/133164.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CPU性能分析--火焰图使用

记录工具使用说明&#xff0c;火焰图原理网上分析很多。主要用来分析函数调用栈占用的cpu利用率&#xff0c;分析函数性能。 perf安装&#xff1a; sudo apt-get install linux-tools-common sudo apt-get install linux-tools-"(uname -r)" sudo apt-get install …

【Python爬虫 js渲染思路一】

Python爬虫 破解js渲染思路一 当我们在谈论网页js渲染的时候&#xff0c;我们在谈论什么 js渲染网页&#xff0c;从某种程度来说&#xff0c;是指单纯的http请求&#xff0c;返回的文本数据&#xff0c;与我们在浏览器看到的内容&#xff0c;相距甚远.其可包括为以下几点&…

JavaScript反爬虫技巧详细攻略

在互联网时代&#xff0c;网站采取了各种手段来防止被爬虫抓取数据&#xff0c;其中最常见的就是JavaScript反爬虫技巧。本文将揭示一些常用的JavaScript反爬虫技巧&#xff0c;并提供一些实际操作建议&#xff0c;帮助您保护自己的爬虫免受检测和封禁。 1、为什么网站使用Java…

【NeRF】1、NeRF 是什么

NeRF 最早是在 ECCV2020 中提出的方法&#xff0c;还获得了 ECCV2020 Oral 论文&#xff1a;Representing Scenes as Neural Radiance Fields for View Synthesis代码&#xff1a;https://github.com/bmild/nerf官网&#xff1a;https://www.matthewtancik.com/nerf Neural R…

集成内部高端电源开关LTC3637HMSE、LTC3637MPMSE稳压器,TJA1443AT汽车CAN FD收发器。

一、LTC3637 76V、1A 降压型稳压器 &#xff08;简介&#xff09;LTC3637是一款高效率降压DC/DC稳压器&#xff0c;集成内部高端电源开关&#xff0c;功耗仅12μA DC&#xff0c;空载时可保持稳定的输出电压。LTC3637可提供高达1A的负载电流&#xff0c;并具有可编程峰值电流限…

API攻防-接口安全SOAPOpenAPIRESTful分类特征导入项目联动检测

文章目录 概述什么是接口&#xff1f; 1、API分类特征SOAP - WSDLWeb services 三种基本元素&#xff1a; OpenApi - Swagger UISpringboot Actuator 2、API检测流程Method&#xff1a;请求方法URL&#xff1a;唯一资源定位符Params&#xff1a;请求参数Authorization&#xff…

【算法系列 | 10】深入解析查找算法之—线性查找

序言 心若有阳光&#xff0c;你便会看见这个世界有那么多美好值得期待和向往。 决定开一个算法专栏&#xff0c;希望能帮助大家很好的了解算法。主要深入解析每个算法&#xff0c;从概念到示例。 我们一起努力&#xff0c;成为更好的自己&#xff01; 今天第10讲&#xff0c;讲…

eclipse 某个文件不能编辑

今天打开eclipse 突然发现有一个文件不能编辑&#xff0c;左下角发现此文件被修改为只读&#xff0c; 右键此文件-->properties--> Resource -->在Attributes中&#xff0c;取消Read-only选项--> Apply 此时&#xff0c;发现eclipse 右下角 变为Writable。再次编辑…

spark中使用flatmap报错:TypeError: ‘int‘ object is not subscriptable

1、背景描述 菜鸟笔者在运行下面代码时发生了报错&#xff1a; from pyspark import SparkContextsc SparkContext("local", "apple1012")rdd sc.parallelize([[1, 2], 3, [7, 5, 6]])rdd1 rdd.flatMap(lambda x: x) print(rdd1.collect())报错描述如…

机器学习必修课 - 交叉验证 Cross-Validation

想象一下你有一个包含5000行数据的数据集。通常情况下&#xff0c;你会将约20%的数据保留作为验证数据集&#xff0c;即1000行。但这会在确定模型得分时引入一些随机性。也就是说&#xff0c;一个模型可能在一组1000行数据上表现良好&#xff0c;即使在另一组1000行数据上表现不…

Self-Instruct

本篇工作利用LLM的生成能力&#xff0c;来产生大量指令数据集&#xff08;指令、输入、输出&#xff09;&#xff0c;无需人工标注数据。 其中&#xff0c;在对任务判别的时候&#xff0c;需要区分是输出优先还是输入优先&#xff1a; 输入优先没问题&#xff0c;符合人类直觉…

【小米技术分享】面试题:什么是乐观锁?你是如何设计一个乐观锁

大家好&#xff0c;我是小米。今天我们来聊一下面试中常见的一个问题&#xff1a;“什么是乐观锁&#xff1f;你是如何设计一个乐观锁&#xff1f;”作为一位热爱技术的程序员&#xff0c;对于这个问题&#xff0c;我有着自己独特的理解和实践经验。接下来&#xff0c;我将以通…