【发布时间】:2016-03-14 08:14:36
【问题描述】:
我希望使用 C++ 将 SVG 文件转换为等效的 GDI + 对象。一旦我得到这个对象,我就可以渲染它。有相同的建议吗?
我的要求是我不应该使用任何第三方 C++ 库?我应该只使用 Micosoft 的库吗?
我可以使用 MSXML 解析 SVG 文件。解析 SVG 文件后如何转换为 GDI+ 对象?
【问题讨论】:
-
您是否考虑过 SVG 不能用 GDI+ 对象表示的可能性?虽然您可以使用 GDI+ 渲染 SVG 图像,但可能无法在 GDI+ 对象中存储足够的信息以供稍后渲染。 GraphicsPath 可能会有所帮助,但不能代表每个 SVG 图像。请参阅Overview of Vector Graphics 和以下部分以获得更好的理解。
-
如何在不使用任何第三方库的情况下使用 C++ 将 SVG 文件转换为光栅化图像格式(bmp、png)?
-
嗯,这很简单。只需编写您自己的 SVG 光栅化器即可。几个月后,您应该会启动并运行一个基本的实现。再过 6 个月,它就会可靠地运行。或者,您可以解释您真正想要什么。您的问题和最后一条评论要求不同的东西。
-
GDI+ 对象支持光栅化图像格式和元文件。如果我将 SVG 文件转换为光栅化图像格式,那么我可以渲染它,这就是我在上一条评论中提出这个问题的原因。
-
如果不使用第三方库,您将不得不编写自己的 SVG 解析器,并将其渲染为可以与 GDI+ 一起使用的图像。这使得这个问题对于 stackoverflow 来说过于宽泛。