4个.Net跨平台图形开源库

4个.Net跨平台图形开源库

1. VectSharp一个C#轻量级矢量图形库

VectSharp 是一个功能强大的 C# 库,专门用于创建矢量图形,包括文本,不依赖任何第三方,支持跨平台运行,包括 Mac、Windows 和 Linux。使得开发者可以更容易地在他们的项目中集成矢量图形的生成和处理。
https://github.com/arklumpus/VectSharp

特点:
内置字体:
包含了 14 种标准字体,这些字体最初是在 ASL-2.0(Apache Software License 2.0)许可下发布的。多种格式:提供了一个抽象层,允许开发者编写不同的输出层来生成不同类型的图形文件。目前支持的输出层包括 PDF、SVG、PNG 以及使用 Avalonia UI 库的 Canvas 对象。光栅图像支持:VectSharp.Raster 能够将矢量图形渲染为 PNG 格式的光栅图像,而 VectSharp.Raster.ImageSharp 则支持多种格式的光栅图像生成。3D 图形:VectSharp.ThreeD 为库增加了三维矢量和光栅图形的支持。图表绘制:VectSharp.Plots 包提供了一系列工具来绘制不同类型的图表,如散点图、折线图、条形图等。Markdown 支持:VectSharp.Markdown 允许将 Markdown 文档转换为矢量图形对象,进而可以导出为 PDF、SVG 或在 Avalonia Canvas 中显示。图像处理工具:VectSharp 提供了 VectSharp.MuPDFUtils 和 VectSharp.ImageSharpUtils 两个工具集,分别使用 MuPDFCore 和 SixLabors.ImageSharp 库来处理图像,以适应不同的需求和许可要求。动画制作:VectSharp 的基础包中包含了一个动画类,可以创建并保存为动画 GIF、SVG 或 PNG 格式的动画。

示例代码

复制代码
using VectSharp;
using VectSharp.PDF;
using VectSharp.SVG;

// 创建一个新的文档对象
Document document = new Document();

// 创建一个新的页面对象,指定页面的宽度和高度为 1000 单位
Page page = new Page(1000, 1000);

// 将创建的页面添加到文档的页面集合中
document.Pages.Add(page);

// 绘制一个填充的矩形,使用灰色,设置一个标签
page.Graphics.FillRectangle(100, 100, 800, 50, Colour.FromRgb(128, 128, 128), tag: "linkToGitHub");

// 绘制第二个填充的矩形,使用红色,并设置一个标签
page.Graphics.FillRectangle(100, 300, 800, 50, Colour.FromRgb(255, 0, 0), tag: "linkToBlueRectangle");

// 绘制第三个填充的矩形,使用蓝色,并设置一个标签
page.Graphics.FillRectangle(100, 850, 800, 50, Colour.FromRgb(0, 0, 255), tag: "blueRectangle");

//绘制文字
page.Graphics.FillText(250, 250, "示例", new Font(VectSharp.FontFamily.ResolveFontFamily(VectSharp.FontFamily.StandardFontFamilies.TimesRoman), 80), Colour.FromRgb(0, 0, 0));

// 创建一个字典,用于存储标签和链接 URL 的映射关系
Dictionary<string, string> links = new Dictionary<string, string>() {
    // 添加一个标签到 URL 的映射
    { "linkToGitHub", "https://github.com/&#34;" },
    // 添加另一个标签到页面内锚点的映射
    { "linkToBlueRectangle", "#blueRectangle" }
};

// 将页面导出为 SVG 文件
page.SaveAsSVG(@"Links.svg", linkDestinations: links);

// 将整个文档导出为 PDF 文件
document.SaveAsPDF(@"Links.pdf", linkDestinations: links);
复制代码

 

2、SkiaSharp:.NET强大而灵活的跨平台图形库

开源地址:https://github.com/mono/SkiaSharp

SkiaSharp是基于Google的Skia图形库的.NET封装,是一个用于2D图像绘制的开源库,无论桌面应用程序、移动应用还是Web应用,都可以使用。

.Net开发人员可以利用这个强大而灵活的跨平台图形库,来实现高质量的图形绘制和渲染。

1、跨平台:支持多种操作系统,包括Windows、macOS、iOS、Android以及其他.NET Core兼容的平台。

2、高性能:支持硬件加速技术,提供高效的图形渲染能力,都可以保证在任何平台应用流畅的用户体验;

3、易用性:提供了直观的API,使得开发人员可以轻松地在.NET应用程序中绘制各种形状、文本和图像。此外还提供了WPF和WinForms的控件,简化开发难度与工作量。

4、丰富的图形功能:除了提供基本的绘图操作,还提供很多复杂的图形效果,如阴影、渐变和纹理。

5、支持多种文本渲染:无论是矢量字体还是位图字体,都提供了强大的文本渲染能力。

 

3、ImageSharp:高性能跨平台.NET开源图形库

开源地址:https://github.com/SixLabors/ImageSharp

一款完全托管的代码库,高性能、跨平台的图形库。它支持在任何支持.NET 6+的环境中安装和使用,可以运用在各种场景:设备端,云端以及嵌入式和物联网等。ImageSharp功能非常丰富,使用简单,常见的操作只需几行代码就可以完成。它支持jpeg、bmp、gif、pbm、png、tga、tiff、webp和qoi等多种图像格式。同时ImageSharp支持超过25种不同的像素格式,并支持对元数据编辑(如IPTC EXIF、XMP)和色彩空间转换(如RGB、CMYK、灰度、CIELab等)功能。此外,它还提供了超过40种常见的图像处理操作,性能出色且内存友好,能够处理任何尺寸的图像,包括数百万像素的大图。

using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;

// 加载图像  
using (var image = Image.Load<Rgba32>("demo.jpg"))
{
    // 应用灰度滤镜  
    image.Mutate(x => x.Grayscale());

    // 保存应用滤镜后的图像  
    image.SaveAsJpeg("grayscale_image.jpg");
}

4、SVG:一个基于.Net的SVG图形开源操作库

开源地址:https://github.com/svg-net/SVG

这是一个支持.Net Framework  与 .Net Core版本的SVG图形操作库。这个项目集成了SVG各项API,让开发人员可以在.Net很轻松的实现SVG图形的操作,通过SVG文件转换为图片文件。

目前在主要有2个版本:Version 2.4/3.0。版本2.4是.NET Framework 特定版本,3.0版本才支持 .NET Core,同时该版本Linux 和 Mac也都是兼容的。

 

posted @   firespeed  阅读(812)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起