【问题标题】:How to convert SVG file to an equivalent GDI+ object?如何将 SVG 文件转换为等效的 GDI+ 对象?
【发布时间】: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 来说过于宽泛。

标签: c++ winapi svg gdi+ msxml


【解决方案1】:

SVG 是一个复杂的 API,使用起来并不容易。如果您可以将您的问题减少到 SVG 的一小部分,您可能有机会得到一些工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-08
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    相关资源
    最近更新 更多