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

news/2024/10/4 2:33:54

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);

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Mysql中的双路排序和单路排序

在Mysql中使用orderby进行排序的时候,是可以使用到索引排序的,但是需要添加一些限制条件,例如: select * from t_user where name=张三 order by name;使用这种方式就可以使用到索引,同时使用limit也是可以使用到索引的 select * from t_user order by name;通过这种方式不…

RocketMQ模型和生产实践

RocketMQ的客户端编程模型相对⽐较固定,基本都有⼀个固定的步骤。掌握这个固定步骤,对于学习其他复杂的消息模型也是很有帮助的。 消息⽣产者的固定步骤 1.创建消息⽣产者producer,并指定⽣产者组名 2.指定Nameserver地址,可以在代码中固定写IP,也可以通过配置项来写,最好…

Spring SpringMVC——前端控制器初始化过程

创建完DispatcherServlet对象时,会执行类中的init方法如果不配置 load-on-startup,那么 DispatcherServlet 将在第一次收到请求时才会被实例化和初始化。这意味着 DispatcherServlet 不会在服务器启动时立即执行创建和初始化的操作。当第一个请求到达时,Servlet 容器(如 To…

【VMware vSphere】存储提供程序中I/O 筛选器状态显示为脱机以及证书已到期的解决办法。

存储提供程序是由 VMware 提供或由第三方通过 vSphere APIs for Storage Awareness (VASA) 开发的软件组件。存储提供程序也可以称为 VASA 提供程序。存储提供程序可与包含外部物理存储和存储抽象的各种存储实体(例如 vSAN 和 Virtual Volumes)集成。存储提供程序也可以支持软…

服务器分层拓扑架构图形化显示工具

目录服务器分层拓扑架构图形化显示工具 --- HWLOC下载依赖包安装源码编译安装执行命令示例显示 PCI 层次结构参考文档服务器分层拓扑架构图形化显示工具 --- HWLOC可移植硬件局部 (hwloc) 软件包提供了现代架构分层拓扑的可移植抽象(跨操作系统、版本、体系结构等),包括 N…

流畅的python学习笔记

示例1-1 一摞有序的纸牌知识点:collections.namedtuple 构建了一个简单的类,表示单张纸牌。from collections import namedtuple Card = namedtuple(Card, [rank, suit])class FrenchDeck:ranks = [str(n) for n in range(2,11)] + list(JQKA)suits = spades diamonds clubs …

+63+条消息++狂神+docker+学习笔记_GaleTeng+的博客+-+CSDN+博客

+63+条消息++狂神+docker+学习笔记_GaleTeng+的博客+-+CSDN+博客 文章目录前言Docker 概述1.Docker 为什么会出现?2.Docker 历史3.Docker 能干嘛Docker 安装1. Docker 的基本组成2. 安装 Docker3. 阿里云镜像加速4. 回顾 HelloWorld 流程5. 底层原理Docker 常用命令1. 帮助命令…

GeometryCollection 的类型映射器(TypeHandler)

GeometryCollection 是 GeoJSON 数据模型中的一个类型,用于表示一个几何对象的集合。MySQL8 中支持了 GeometryCollection 类型,在对数据库和实体类进行对象映射时需要我们自己编写类型映射器来完成映射。java 本身不支持 GeometryCollection 类型,我们需要引入第三方包来获…