将 SVG 路径数据转换为 GDI+图形路径数据
有没有一种简单的方法可以将 SVG 路径标记转换为 C# System.Drawing.Drawing2D.GraphicsPath?它们都是密切相关的,我希望能够轻松地将 SVG 路径数据转换为 GraphicsPath 点。
Is there an easy way to convert an SVG path tag into a C# System.Drawing.Drawing2D.GraphicsPath? They are both closely related and I was hoping there would be an easy to convert the SVG path data into GraphicsPath Points.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
此 SVG 项目通过以下方式提供了解决方案:
它可以通过以下方式作为 NuGet 包提供:
This SVG project provides a solution in the following way:
It's available as a NuGet package via:
虽然 SVG 路径和 GraphicsPath 看起来相似并且具有相同的用途,但没有简单的方法,但在指定和处理事物的方式上存在一些差异。一个示例:SVG 弧定义与
GraphicsPath
定义弧的方式不同,因此您需要执行一点三角函数来转换它。另请查看在 .NET/C# 中绘制 SVG?
There's no easy way, although SVG paths and
GraphicsPath
look similar and serve the same purpose, there are some differences in how things are specified and handled. One example: SVG arc definition is different from howGraphicsPath
defines arcs, so you'll need to do a little bit of trigonometry to convert it.Also check out Drawing SVG in .NET/C#?
我希望这还不算晚!查看 AGG 的 svg 查看器程序的源代码: https://github.com/timothytylee /agg/tree/master/examples/svg_viewer
源代码采用 C++ 编写,使用 AGG 图形引擎,但很容易转换为 GDI+。它还处理 SVG Arc 到 Bezier Arc 的转换,然后可以与 GDI+ 一起使用。
祝你好运
I hope this ain't late! Check out the source code of the svg viewer program from AGG: https://github.com/timothytylee/agg/tree/master/examples/svg_viewer
The source code is in C++ and uses the AGG graphics engine, but it's easy to translate to GDI+. It also handles the conversion of SVG Arc to a Bezier Arc which can then be used with GDI+.
Good luck
事情没那么复杂。
如果 svg 路径仅包含 MLQZ ZM 函数,则您的方法如下所示:
It's not that complicated.
If the svg path only consists of
M L Q Z ZM
functions your method looks like this: