首页 > 其他分享 >【Dotnet 工具箱】探索 LiveCharts2:一款强大的跨平台图表库

【Dotnet 工具箱】探索 LiveCharts2:一款强大的跨平台图表库

时间:2023-04-10 09:34:40浏览次数:50  
标签:LiveCharts2 using var 跨平台 Ryujinx Mapster Dotnet new

你好,这里是 Dotnet 工具箱,定期分享 Dotnet 有趣,实用的工具和组件,希望对您有用!

LiveCharts2

LiveCharts2 是一个简单、灵活、交互式以及功能强大的跨平台图表库。

LiveCharts2 现在几乎可以在任何地方运行,包括 Maui、Uno Platform、Blazor-wasm、WPF、WinForms、Xamarin、Avalonia、WinUI、UWP。

LiveCharts2 (v2) 是LiveCharts (v0)的演变,它修复了其前身的主要设计问题,它专注于在任何地方运行,在不丢失在 v0 中已有的东西的情况下提高了灵活性。

LiveCharts2 的特点之一是性能优异,它使用了一些优化技巧,比如数据虚拟化、图形缓存、异步绘制等,能够在大数据量下仍然能保持良好的响应速度和渲染性能。另外,它还提供了丰富的文档和示例,方便开发者快速入手和使用。

图表示例

LiveCharts2 提供了多种类型的图表,包括折线图、面积图、柱状图、散点图、饼图等。同时,它还支持多个图表联动显示,支持动态更新数据、自定义样式和动画效果等功能。

在控制台程序中生成图像

LiveCharts 可以在不需要任何 UI 框架的情况下呈现图像,只要安装 SkiaSharp View 包,就可以在服务器端或控制台应用程序中构建图像,它可以从 NuGet 安装:

LiveChartsCore.SkiaSharpView
using LiveChartsCore;
using LiveChartsCore.Geo;
using LiveChartsCore.SkiaSharpView;
using LiveChartsCore.SkiaSharpView.Drawing.Geometries;
using LiveChartsCore.SkiaSharpView.SKCharts;

var cartesianChart = new SKCartesianChart
{
    Width = 900,
    Height = 600,
    Series = new ISeries[]
    {
        new LineSeries<int> { Values = new int[] { 1, 5, 4, 6 } },
        new ColumnSeries<int> { Values = new int[] { 4, 8, 2, 4 } }
    }
};

// you can save the image to png (by default)
// or use the second argument to specify another format.
cartesianChart.SaveImage("cartesianChart.png");

var pieChart = new SKPieChart
{
    Width = 900,
    Height = 600,
    Series = new ISeries[]
    {
        new PieSeries<int> { Values = new int[] { 10, } },
        new PieSeries<int> { Values = new int[] { 6 } },
        new PieSeries<int> { Values = new int[] { 4 } }
    }
};

pieChart.SaveImage("pieChart.png");

var geoHeatMap = new SKGeoMap
{
    Width = 900,
    Height = 600,
    Series = new IGeoSeries[]
    {
        new HeatLandSeries
        {
            Lands = new HeatLand[]
            {
                new() { Name = "mex", Value = 10 },
                new() { Name = "usa", Value = 15 },
                new() { Name = "can", Value = 8 }
            }
        }
    }
};

geoHeatMap.SaveImage("geoHeatMap.png");

// alternatively you can get the image and do different operations:
using var image = cartesianChart.GetImage();
using var data = image.Encode();
var base64CartesianChart = Convert.ToBase64String(data.AsSpan());

Console.WriteLine("Images saved at the root folder!");

项目地址: https://github.com/beto-rodriguez/LiveCharts2

Ryujinx - 基于 C# 开发的任天堂 Switch 模拟器

Ryujinx 是一个开源的任天堂 Switch 模拟器,可以在 PC 上模拟运行 Switch 游戏。由 gdkchan 创建,使用 C# 编写。这个模拟器旨在提供卓越的准确性和性能、用户友好的界面和一致的构建。它是从头开始编写的,该项目的开发是从 2017 年 9 月开始。

Ryujinx 是基于 C# 语言编写的,使用了 .NET Core 和 .NET Standard 技术,可跨平台运行在 Windows、Linux 和 macOS 等操作系统上。

截止到 2022 年 11 月,Ryujinx 已经在大约 3,800 个游戏上进行了测试;超过 3,600 个进入游戏,其中大约 3,200 个被认为是可玩的。 您可以在下面的链接查看兼容性列表。

https://github.com/Ryujinx/Ryujinx-Games-List/issues

以下是一些已经在 Ryujinx 上运行良好的知名游戏:

  • 塞尔达传说:荒野之息 (The Legend of Zelda: Breath of the Wild)
  • 精灵宝可梦:剑/盾 (Pokémon Sword/Shield)
  • 异度之刃2 (Xenoblade Chronicles 2)
  • 巨人的召唤 (Attack on Titan 2)
  • 火焰纹章:风花雪月 (Fire Emblem: Three Houses)
  • 超级马力欧 奥德赛 (Super Mario Odyssey)
  • 奥德赛战记 (Octopath Traveler)
  • 勇者斗恶龙 XI S:彩虹之岛版 (Dragon Quest XI S: Echoes of an Elusive Age

同时,Ryujinx 还拥有一个活跃的社区,可以帮助用户解决问题并提供支持。

项目地址:https://github.com/Ryujinx/Ryujinx

Mapper, 一个比 AutoMapper 更快的对象映射库

Mapster 是一个 .NET 库,它提供了一种简单的方式来实现对象之间的映射。它使用了一个基于约定的自动映射策略,让你可以轻松地将一个对象转换为另一个对象。

编写映射方法是一项机器工作。不要浪费你的时间,让 Mapster 来做吧。

安装

使用 NuGet CLI 安装 Mapster:

Install-Package Mapster

或者使用 .NET Core CLI 安装 Mapster:

dotnet add package Mapster

映射到新对象

var destObject = sourceObject.Adapt<Destination>();

映射到现有对象

sourceObject.Adapt(destObject);

依赖注入

还可以通过依赖注入获取 IMapper 实例,所以在从 automapper 迁移到 Mapster 时,基本上不需更改代码。

注入 Mapster 服务。

services.AddMapster();

然后和 DI 一起使用

public class Test
{
    public Test(IMapper mapper)
    {
        var sourceObject = mapper.Adapt<Destination>();
    }
}

为什么选择 Mapster?

Mapster 旨在提高速度和内存效率。它可以获得 4 倍的性能提升,同时仅仅使用了 1/3 的内存。并且可以获得高达 12 倍的性能提升。

测试报告

Mapster 是一个非常方便的库,它可以大大简化 .NET 项目中对象之间的映射工作,并且具有很好的可扩展性和灵活性。

项目地址:https://github.com/MapsterMapper/Mapster

标签:LiveCharts2,using,var,跨平台,Ryujinx,Mapster,Dotnet,new
From: https://www.cnblogs.com/dotnet-box/p/17301769.html

相关文章

  • Koodo Reader 是一个跨平台的电子书阅读器
    KoodoReader是一个跨平台的电子书阅读器。平台支持Windows,macOS,Linux和网页版,格式支持epub,pdf,mobi,azw3,txt,djvu,markdown,fb2,cbz,cbt,cbr,rtf和docx。支持阅读epub,pdf,mobi,azw3,txt,md,djvu,docx,rtf,cbz,cbr,cbt,fb2,html和xml格式的......
  • 菜鸟手脱VMP,附上脱壳过程和自己写的脚本,可跨平台
    工作需要要脱一个VMP壳,我是一个从来没接触过脱壳的人。瞬间那种心情遇到的人应该都知道!没办法硬着头皮找教程,7天看完了《天草的壳的世界》尝试脱壳下面是我的脱壳过程希望大牛多多指正!1、准备工具,FEID(查壳工具)、DIE(查壳工具)、LordPE(dump工具)、ImpRec(IAT修复工具)、UIF(IAT修复工具)......
  • dotnet-sharp 笔记(二)
    C#新特性泛型属性创建属性时可直接使用泛型//声明一个泛型属性publicclassGenericAttribute<T>:Attribute{}//使用[GenericAttribute<string>()]publicstringMethod()=>default;字符串内可插入换行符$"{\r\n}"原始字符串三个双引号开头并结尾,可以包含任......
  • SpringBoot微服务集成keycloak实现跨平台统一认证授权
    //项目架构微服务划分://auth认证微服务实现登录认证拦截,获取token//gateway网关微服务//user用户微服务用户权限管理//system系统微服务核心逻辑处理//xxx其他微服务//common模块//1、common模块引入keycloak认证相关依赖<properties><keyc......
  • System.Drawing跨平台问题
     一、问题描述项目报出了如下错误:  二、问题分析后端项目部署在Linux系统,有一个接口涉及到数据流转图片,部分代码如下:Imageimage=Image.FromStream(stream);......
  • IM跨平台技术学习(七):得物基于Electron开发客服IM桌面端的技术实践
    本文由得物技术团队Uni分享,即时通讯网收录时有内容修订和排版优化。一、引言本文要分享的是得物技术团队基于Electron开发客服IM桌面端的技术实践过程,内容包括桌面技术......
  • iTeleport:让Siri可以跨平台运行OS X应用
    让iOS平台上的Siri跨平台运行的OSX应用?别忙着说不,利用一款叫做iTeleport的VNC(VirtualNetworkComputing,远程操作)软件,完全可以做到这一点。最新版的......
  • High availability · AzureAD/microsoft-authentication-library-for-dotnet Wiki ·
    Highavailability·AzureAD/microsoft-authentication-library-for-dotnetWiki·GitHubPro-activetokenrenewalToimproveavailabilityMSALtriestoensuret......
  • 【Avalonia】【跨平台】关于控件阴影简单用法
    背景当我们在用Avalonia开发项目时,我们可能会对控件添加一些阴影效果,改善用户体验,我们开发WPF的人知道,WPF会给我提供Effect这么一个属性,这是方便我们进行阴影以及特效使用......
  • C#/.NET Core跨平台分布式微服务/DDD领域驱动架构设计VIP实战
    阿笨NET课程详情腾讯课堂官网 https://abennet.ke.qq.com/【报名请咨询老师扣扣:422159763】 ......