跳至页脚内容
迁移指南

如何用 C# 从 VectSharp 迁移到 IronPDF

从VectSharp迁移到 IronPDF:完整的 C# 开发人员指南。

VectSharp 已成为 .NET 生态系统中一个功能强大的矢量图形库,在科学可视化和技术插图方面尤为重要。 然而,当开发团队需要生成商业文档、报告、发票或任何基于 HTML 的内容时,VectSharp 的图形优先范式就会产生很大的摩擦。 该库是为创建数字和绘图的科学家设计的,而不是为生成文档的开发人员设计的。

本指南提供了从VectSharp到IronPDF的完整迁移路径,为评估这一过渡的专业 .NET 开发人员提供了分步说明、代码比较和实用示例。

为什么要从VectSharp迁移

VectSharp 是一个科学可视化和矢量图形库,设计用于创建图表和技术插图。 它不是为生成文档而设计的--它只是一个可以输出 PDF 的绘图库。 开发团队考虑迁移的主要原因包括

仅关注科学:VectSharp 设计用于数据可视化和绘图,而非发票、报告或证书等商业文档。

不支持 HTML:VectSharp 无法将 HTML 或 CSS 转换为 PDF。 每个元素都必须使用矢量图形命令手动绘制。

基于坐标的 API:每个元素都必须以精确的 X、Y 坐标定位。 没有自动布局、流程或文本封装。

无 CSS样式:所有样式均通过方法调用进行编程。 网络开发人员不能利用现有的 CSS 知识。

无 JavaScript:VectSharp 无法呈现动态网页内容、交互式图表或基于 JavaScript 的可视化效果。

无文本布局:不提供自动文本封装、分页和流程布局。 开发人员必须手动计算文本位置和分页符。

图形优先范式:该库是为图表而设计的,而不是为报告或发票。 文档生成需要大量的手工工作。

核心问题:图形库与文档生成器

VectSharp 要求对每个元素进行手工矢量绘制:

// VectSharp: 手册 vector drawing for every element
Page page = new Page(595, 842);
Graphics graphics = page.Graphics;
graphics.FillRectangle(50, 50, 200, 100, Colour.FromRgb(0, 0, 255));
graphics.FillText(60, 70, "Invoice", new Font(new FontFamily("Arial"), 20), Colours.White);
// ... continue drawing every single element manually
// VectSharp: 手册 vector drawing for every element
Page page = new Page(595, 842);
Graphics graphics = page.Graphics;
graphics.FillRectangle(50, 50, 200, 100, Colour.FromRgb(0, 0, 255));
graphics.FillText(60, 70, "Invoice", new Font(new FontFamily("Arial"), 20), Colours.White);
// ... continue drawing every single element manually
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPdf 使用 HTML--通用文档格式:

// IronPDF: Declarative HTML for document creation
var html = "<h1>Invoice</h1><p>Customer: Acme Corp</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
// IronPDF: Declarative HTML for document creation
var html = "<h1>Invoice</h1><p>Customer: Acme Corp</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPdf 与 VectSharp:功能对比

了解架构差异有助于技术决策者评估迁移投资:

特征VectSharpIronPDF
主要用途矢量图形文件创建
PDF输出
HTML 支持
许可LGPL商业翻译
开放源代码部分(商业功能)
最适合科学可视化一般 PDF 文档
定制限于图形广泛的文档相关内容
HTML 到 PDF完整的 Chromium
URL 转 PDF
CSS支持完整的 CSS3
JavaScript语言完整的 ES2024
自动排版
自动分页
文本封装手册自动翻译
合并 PDF 文件
拆分 PDF 文件
密码保护
数字签名
学习曲线高(坐标)低级(HTML/CSS)
代码准确性极高

快速入门:VectSharp 到IronPDF的迁移。

迁移工作可以通过以下基本步骤立即开始。

步骤 1:替换 NuGet 软件包

删除所有VectSharp软件包:

# RemoveVectSharppackages
dotnet remove package VectSharp
dotnet remove package VectSharp.PDF
# RemoveVectSharppackages
dotnet remove package VectSharp
dotnet remove package VectSharp.PDF
SHELL

安装 IronPDF:

# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
SHELL

步骤 2:更新命名空间

用 IronPdf 命名空间替换VectSharp命名空间:

// Before (VectSharp)
using VectSharp;
using VectSharp.PDF;

// After (IronPDF)
using IronPdf;
// Before (VectSharp)
using VectSharp;
using VectSharp.PDF;

// After (IronPDF)
using IronPdf;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

步骤 3:初始化许可证

在应用程序启动时添加许可证初始化:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

代码迁移示例

将HTML转换为PDF

VectSharp 不支持 HTML 到 PDF 的转换。 这种基本的能力差异推动了许多迁移决策。

VectSharp 方法:

// NuGet: Install-Package VectSharp.PDF
using VectSharp;
using VectSharp.PDF;
using VectSharp.SVG;
using System.IO;

class Program
{
    static void Main()
    {
        //VectSharpdoesn't directly support HTML to PDF
        // It requires manual creation of graphics objects
        Document doc = new Document();
        Page page = new Page(595, 842); // A4 size
        Graphics graphics = page.Graphics;

        graphics.FillText(100, 100, "Hello from VectSharp", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24));

        doc.Pages.Add(page);
        doc.SaveAsPDF("output.pdf");
    }
}
// NuGet: Install-Package VectSharp.PDF
using VectSharp;
using VectSharp.PDF;
using VectSharp.SVG;
using System.IO;

class Program
{
    static void Main()
    {
        //VectSharpdoesn't directly support HTML to PDF
        // It requires manual creation of graphics objects
        Document doc = new Document();
        Page page = new Page(595, 842); // A4 size
        Graphics graphics = page.Graphics;

        graphics.FillText(100, 100, "Hello from VectSharp", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24));

        doc.Pages.Add(page);
        doc.SaveAsPDF("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPdf 方法:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF</h1><p>This is HTML content.</p>");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF</h1><p>This is HTML content.</p>");
        pdf.SaveAs("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

VectSharp 要求创建 Document,<代码>页面</代码和<代码>图形</代码对象,然后使用精确坐标和字体对象手动定位文本。IronPDF可直接渲染 HTML,并完全支持 CSS 样式。

有关 HTML 转 PDF 的高级应用场景,请参阅 HTML 转 PDF 指南

创建多页文档

多页文档揭示了这些 .NET PDF 库之间的架构差异。

VectSharp 方法:

// NuGet: Install-Package VectSharp.PDF
using VectSharp;
using VectSharp.PDF;
using System;

class Program
{
    static void Main()
    {
        Document doc = new Document();

        // Page 1
        Page page1 = new Page(595, 842);
        Graphics g1 = page1.Graphics;
        g1.FillText(50, 50, "Page 1", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24));
        g1.FillText(50, 100, "First page content", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 14));
        doc.Pages.Add(page1);

        // Page 2
        Page page2 = new Page(595, 842);
        Graphics g2 = page2.Graphics;
        g2.FillText(50, 50, "Page 2", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24));
        g2.FillText(50, 100, "Second page content", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 14));
        doc.Pages.Add(page2);

        doc.SaveAsPDF("multipage.pdf");
    }
}
// NuGet: Install-Package VectSharp.PDF
using VectSharp;
using VectSharp.PDF;
using System;

class Program
{
    static void Main()
    {
        Document doc = new Document();

        // Page 1
        Page page1 = new Page(595, 842);
        Graphics g1 = page1.Graphics;
        g1.FillText(50, 50, "Page 1", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24));
        g1.FillText(50, 100, "First page content", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 14));
        doc.Pages.Add(page1);

        // Page 2
        Page page2 = new Page(595, 842);
        Graphics g2 = page2.Graphics;
        g2.FillText(50, 50, "Page 2", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 24));
        g2.FillText(50, 100, "Second page content", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 14));
        doc.Pages.Add(page2);

        doc.SaveAsPDF("multipage.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPdf 方法:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string html = @"
            <h1>Page 1</h1>
            <p>First page content</p>
            <div style='page-break-after: always;'></div>
            <h1>Page 2</h1>
            <p>Second page content</p>
        ";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("multipage.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string html = @"
            <h1>Page 1</h1>
            <p>First page content</p>
            <div style='page-break-after: always;'></div>
            <h1>Page 2</h1>
            <p>Second page content</p>
        ";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("multipage.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

VectSharp 要求创建单独的<代码>页面</代码对象、单独的<代码>图形</代码上下文,并使用坐标和字体对象为每个页面手动定位每个文本元素。 IronPdf 使用带有 CSS page-break-after: always 的单个 HTML 字符串自动创建多页文档。

绘制图形和文本

图形功能显示了VectSharp的优势,但同时也显示了网络标准可以用更少的代码提供同等功能的地方。

VectSharp 方法:

// NuGet: Install-Package VectSharp.PDF
using VectSharp;
using VectSharp.PDF;
using System;

class Program
{
    static void Main()
    {
        Document doc = new Document();
        Page page = new Page(595, 842);
        Graphics graphics = page.Graphics;

        // Draw rectangle
        graphics.FillRectangle(50, 50, 200, 100, Colour.FromRgb(0, 0, 255));

        // Draw circle
        GraphicsPath circle = new GraphicsPath();
        circle.Arc(400, 100, 50, 0, 2 * Math.PI);
        graphics.FillPath(circle, Colour.FromRgb(255, 0, 0));

        // Add text
        graphics.FillText(50, 200, "VectSharp Graphics", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 20));

        doc.Pages.Add(page);
        doc.SaveAsPDF("shapes.pdf");
    }
}
// NuGet: Install-Package VectSharp.PDF
using VectSharp;
using VectSharp.PDF;
using System;

class Program
{
    static void Main()
    {
        Document doc = new Document();
        Page page = new Page(595, 842);
        Graphics graphics = page.Graphics;

        // Draw rectangle
        graphics.FillRectangle(50, 50, 200, 100, Colour.FromRgb(0, 0, 255));

        // Draw circle
        GraphicsPath circle = new GraphicsPath();
        circle.Arc(400, 100, 50, 0, 2 * Math.PI);
        graphics.FillPath(circle, Colour.FromRgb(255, 0, 0));

        // Add text
        graphics.FillText(50, 200, "VectSharp Graphics", 
            new Font(FontFamily.ResolveFontFamily(FontFamily.StandardFontFamilies.Helvetica), 20));

        doc.Pages.Add(page);
        doc.SaveAsPDF("shapes.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPdf 方法:

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string html = @"
            <div style='width: 200px; height: 100px; background-color: blue; margin: 50px;'></div>
            <div style='width: 100px; height: 100px; background-color: red; 
                        border-radius: 50%; margin-left: 350px; margin-top: -50px;'></div>
            <h2 style='margin-left: 50px;'>IronPDF Graphics</h2>
        ";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("shapes.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string html = @"
            <div style='width: 200px; height: 100px; background-color: blue; margin: 50px;'></div>
            <div style='width: 100px; height: 100px; background-color: red; 
                        border-radius: 50%; margin-left: 350px; margin-top: -50px;'></div>
            <h2 style='margin-left: 50px;'>IronPDF Graphics</h2>
        ";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("shapes.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

VectSharp 要求创建<代码>图形路径</代码对象,使用精确的数学参数调用 Arc() 并通过<代码>Colour.FromRgb()</代码管理颜色。 IronPdf 使用熟悉的 CSS 属性:background-color, border-radius: 50% for circles, and standard margins.

VectSharpAPI 到IronPDF映射参考

这种映射通过显示直接的 API 对应关系来加速迁移:

VectSharpIronPDF备注
<代码>文档</代码<代码>ChromePdfRenderer</代码创建呈现器
<代码>页面</代码自动翻译根据 HTML 创建的页面
<代码>图形</代码HTML/CSS声明式标记
<代码>graphics.FillRectangle()</代码<div> 上的 CSS background-colorHTML 框
<代码>graphics.StrokeRectangle()</代码<div> 上的 CSS 边框边界
<代码>graphics.FillText()</代码HTML 文本元素<代码>

</代码>, <代码>

</代码>, <代码></代码

<代码>graphics.StrokePath()</代码SVG 或 CSS 边框矢量路径
<代码>图形路径</代码SVG <path> 元素复杂的形状
<代码>Colour.FromRgb()</代码CSS 颜色值<代码>rgb()</代码>, <代码>#hex</代码>, 命名
Font / FontFamilyCSS font-family支持的网络字体
<代码>doc.SaveAsPDF()</代码<代码>pdf.SaveAs()</代码保存到文件
手动调整页面大小<代码>RenderingOptions.PaperSize</代码或 CSS @page

迁移策略

策略 1:将绘图代码转换为 HTML/CSS.

用 HTML 元素替换基于坐标的绘图:

// VectSharp
graphics.FillRectangle(100, 50, 300, 80, Colour.FromRgb(0, 102, 204));
graphics.FillText(110, 80, "Header", font, Colours.White);

//IronPDFHTML equivalent
<div style="
    position: absolute;
    left: 100px;
    top: 50px;
    width: 300px;
    height: 80px;
    background: rgb(0, 102, 204);
    color: white;
    padding: 10px;
">Header</div>
// VectSharp
graphics.FillRectangle(100, 50, 300, 80, Colour.FromRgb(0, 102, 204));
graphics.FillText(110, 80, "Header", font, Colours.White);

//IronPDFHTML equivalent
<div style="
    position: absolute;
    left: 100px;
    top: 50px;
    width: 300px;
    height: 80px;
    background: rgb(0, 102, 204);
    color: white;
    padding: 10px;
">Header</div>
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

策略 2:使用 SVG 制作矢量图形

对于复杂的图形,请在 HTML 中使用内联 SVG:

//VectSharppath
GraphicsPath path = new GraphicsPath();
path.MoveTo(100, 100);
path.LineTo(200, 50);
path.LineTo(300, 100);
path.Close();
graphics.FillPath(path, Colours.Blue);

//IronPDFSVG equivalent
<svg><polygon points="100,100 200,50 300,100" fill="blue"/></svg>
//VectSharppath
GraphicsPath path = new GraphicsPath();
path.MoveTo(100, 100);
path.LineTo(200, 50);
path.LineTo(300, 100);
path.Close();
graphics.FillPath(path, Colours.Blue);

//IronPDFSVG equivalent
<svg><polygon points="100,100 200,50 300,100" fill="blue"/></svg>
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

策略 3:使用 JavaScript 图表库

对于科学可视化--VectSharp 的专长--IronPDF 可以利用强大的 JavaScript 库,如 Chart.js、D3.js 或 Plotly:

var html = @"
<script src='https://cdn.plot.ly/plotly-latest.min.js'></script>
<div id='chart'></div>
<script>
    Plotly.newPlot('chart', [{
        x: [1, 2, 3, 4],
        y: [10, 15, 13, 17],
        type: 'scatter'
    }]);
</script>";

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
var pdf = renderer.RenderHtmlAsPdf(html);
var html = @"
<script src='https://cdn.plot.ly/plotly-latest.min.js'></script>
<div id='chart'></div>
<script>
    Plotly.newPlot('chart', [{
        x: [1, 2, 3, 4],
        y: [10, 15, 13, 17],
        type: 'scatter'
    }]);
</script>";

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
var pdf = renderer.RenderHtmlAsPdf(html);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

常见迁移问题和解决方案

问题 1:坐标系差异

VectSharp使用从左上方原点开始的点进行手动定位。

解决方案:使用 CSS 定位:

.element {
    position: absolute;
    top: 50px;
    left: 100px;
}

问题 2:字体对象

VectSharp 以编程方式创建 FontFontFamily 对象。

解决方案:使用 CSS 字体-family:

<style>
    body { font-family: Arial, sans-serif; font-size: 12pt; }
</style>
<style>
    body { font-family: Arial, sans-serif; font-size: 12pt; }
</style>
HTML

问题 3:颜色处理

VectSharp 使用<代码>Colour.FromRgb()</代码方法调用。

解决方案:使用 CSS 颜色:

.header { color: rgb(0, 102, 204); background-color: #f0f0f0; }

第 4 期:图形路径

VectSharp 使用复杂的<代码>图形路径</代码API 和 MoveTo, LineTo, Arc 方法。

解决方案:使用 SVG 表示矢量图形:

<svg>
    <path d="M 100 100 L 200 50 L 300 100 Z" fill="blue"/>
</svg>
<svg>
    <path d="M 100 100 L 200 50 L 300 100 Z" fill="blue"/>
</svg>
HTML

VectSharp迁移清单

迁移前任务

审核您的代码库,确定所有VectSharp使用情况:

grep -r "using VectSharp" --include="*.cs" .
grep -r "Graphics\|FillRectangle\|FillText" --include="*.cs" .
grep -r "using VectSharp" --include="*.cs" .
grep -r "Graphics\|FillRectangle\|FillText" --include="*.cs" .
SHELL

文档页面大小(new Page(595, 842) 模式)。 使用<代码>Colour.FromRgb()</代码注意配色方案。 确定字体配置。 使用<代码>图形路径</代码映射复杂的矢量图形,进行 SVG 转换。

代码更新任务

1.删除VectSharpNuGet 软件包 2.安装 IronPdf NuGet 软件包 3.将使用语句从 VectSharp 更新为 IronPdf 4.将 FillRectangle 调用转换为带有 background-color 的 CSS 框 5.将 FillText 调用转换为带有 CSS 样式的 HTML 文本元素 6.将<代码>图形路径</代码操作转换为 SVG <path> 元素 7.用<代码>RenderingOptions.PaperSize</代码代替手动页面管理 8.在启动时添加许可证初始化

迁移后测试

迁移后,验证这些方面:

  • 比较VectSharp和 IronPdf 版本的可视化输出结果
  • 使用 CSS 中的<代码>Colour.FromRgb()</代码值验证颜色是否匹配
  • 检查从基于坐标的放置转换而来的元素的定位精度
  • 测试多页文档的分页符
  • 通过 SVG 验证矢量图形的正确呈现

迁移到IronPDF的主要优势

从VectSharp迁移到IronPDF为文档生成提供了多项优势:

基于 HTML 的内容:网络开发人员可以利用现有的 HTML 和 CSS 技能。 无需学习基于坐标的绘图 API。

自动布局:自动进行文本换行、分页和流程布局。 无需手动计算元素位置。

现代 CSS 支持:完整的 CSS3,包括 Flexbox 和网格布局。 响应式设计可直接翻译成 PDF。

JavaScript执行:使用Chart.js、D3.js或Plotly的交互式图表能正确呈现。 动态内容要达到预期效果。

URL-to-PDF:将任何网页捕获为 PDF--这是VectSharp无法实现的功能。

PDF操作:合并、分割、添加水印、密码保护和数字签名都是内置功能。

降低代码明晰度:HTML/CSS 具有声明性和可读性。 与VectSharp的命令式绘图方法相比,同一文档所需的代码量要少得多。

主动开发:随着 .NET 10 和 C# 14 在 2026 年之前的采用率不断提高,IronPDF 的定期更新可确保与当前和未来的 .NET 版本兼容。

结论

VectSharp 是一个科学可视化库,可用于创建精确的图表和技术插图。 然而,对于开发团队来说,他们的需求已经从矢量图形扩展到商业文档、报告、发票或任何基于 HTML 的内容,VectSharp 图形优先的范例造成了不必要的复杂性。

IronPDF 采用网络标准方法提供文档生成功能。 HTML 和 CSS 取代了基于坐标的绘图。 自动排版取代手动定位。 JavaScript 图表取代了编程路径构造。 迁移路径简单明了:替换 NuGet 软件包,将绘图代码转换为HTML/CSS或 SVG,充分利用现代网络技术的强大功能生成 PDF。

立即开始迁移,免费试用 IronPDF,体验基于 HTML 的文档生成的简便性。

有关全面的实施指导,请浏览 IronPDF 文档教程

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。