4個.Net跨平臺圖形開源庫

firespeed發表於2024-05-08

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也都是相容的。

相關文章