2010-11-14 97 views
7

我和一位朋友正在制作一个2D游戏,其中图形将是.svg文件,我们可以通过先对它们进行光栅化或直接将它们渲染到表面上(这仍然需要在某个点进行光栅化)。在C++中呈现矢量图形(.svg)

问题是,我一直在寻找一个库,可以让我获得一个.svg文件,并最终以快板渲染。据我所知,它会将光栅化转化为快板可以读取的某种格式,然后快板可以呈现出“扁平化”的图像。

那么,我可以使用什么C++库来获取.SVG文件并将其“展平”,以便我可以呈现它?该库显然也需要支持缩放,所以我可以缩放矢量图形然后栅格化它。

我使用Windows和Visual C++ 2010年快递

任何建议将是有益的,因为我很失落,现在:

我试过开罗,但只允许.SVG的写作文件,并且不允许您读取.svg文件。我也研究过与Cario一起工作的librsvg,但是我在使它在Windows上正常工作时遇到了很多麻烦(因为它有大量的GNOME依赖)。如果你有任何指导让这些工作(在Windows上),这将是很好的。

回答

7

wxsvg library允许加载和操作SVG文件。 Qt也有一个SVG module

+0

wxSVG看起来很完美,因为我有wxWidgets的经验。虽然我完全不知道如何在Windows上进行编译,但我最终会弄清楚。谢谢:) – Brad 2010-11-14 08:18:24

3

SVG++ library为SVG阅读提供了高级支持,因此可以在合理的时间内执行带有快板的SVG。

1

我最近把一个小的SVG渲染库在C++: https://github.com/igagis/svgren

它使用开罗渲染屏幕外表面。 支持渐变和各种形状。

+0

你使用这个库来渲染文本?我遇到文字问题。 – 2017-04-27 07:33:15

+0

@SubhamoySengupta如果您对图书馆有任何问题,请将问题提交到https://github.com/igagis/svgren/issues – igagis 2017-04-27 09:14:38

+0

如果我发现错误,我会提交问题。由于它看起来像文本根本不被支持,我不确定这是否是一个问题。因此,这个问题。 – 2017-04-28 10:54:05

1

我来得迟了一点,但我建议你看看Nano SVG,这是一个非常轻量级的svg渲染器,它不需要cairo/libsvg。我得到了nanosvg编译并在几个小时内工作。这是非常基本的,但它完成了工作。