12

我和一个朋友正在开发一个 2D 游戏,其中的图形将是 .svg 文件,我们将通过首先对它们进行光栅化或直接在表面上渲染它们来适当地缩放它们(在某些时候仍然需要光栅化)。

问题是,我整天都在寻找一个库,它可以让我获取一个 .svg 文件并最终让它在 allegro 中呈现。据我所知,这将涉及将光栅化为 allegro 可以读取的某种格式,然后 allegro 可以渲染“扁平化”图像。

那么,我可以使用哪些 C++ 库来获取 .SVG 文件并将其“展平”以便渲染它?该库显然也需要支持缩放,因此我可以缩放矢量图形然后对其进行光栅化。

我正在使用 Windows 和 Visual C++ Express 2010。

我试过 Cairo,但它只允许写入 .svg 文件,不允许读取 .svg 文件。我还研究了与 Cario 一起使用的 librsvg,但我在让它在 Windows 上正常工作时遇到了很多麻烦(因为它有很多 GNOME 依赖项)。如果您有任何指南可以让这些工作(在 Windows 上),那也很棒。

4

8 回答 8

10

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

于 2010-11-14T08:00:56.903 回答
6

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

于 2016-11-23T17:29:49.540 回答
2

SVG++ 库为 SVG 读取提供了高级支持,因此可以在合理的时间内实现使用 allegro 渲染 SVG。

于 2015-01-09T18:22:10.920 回答
2

我最近用 C++ 编写了一个 SVG 渲染器库: https ://github.com/igagis/svgren

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

于 2015-10-25T23:34:48.347 回答
2

https://github.com/sammycage/lunasvg是一个不错的 svg 解析、渲染和操作库。它是用纯c++编写的

于 2020-03-26T05:25:09.053 回答
1

就个人而言,我在 Simple Viewer GL 中使用 NanoSVG。它让我可以用几行代码轻松加载和光栅化 SVG 图像。但是这个库对 SVG 的支持很弱。

于 2019-07-02T08:14:00.927 回答
1

nanosvg和许多其他 c++ svg 解析器的帮助下,将 svg 渲染功能添加到您的应用程序应该是微不足道的。秘诀如下:svg 解析器 + 矢量渲染库 = 简单的 svg 渲染。矢量渲染库可以是cairo和许多其他库(nanovg想到的,以及许多其他vg库)。这是一个如何使用 cairo + fltk + nanosvg 组合支持 svg 渲染的示例。现在,所有的 svg 解析器,以及 cairo 本身,以及其他渲染器,都有错误/缺点,但基本的 svg 支持永远不会出现问题。

于 2020-11-24T07:03:21.250 回答
0

我正在寻找一种真正快速的方法来在基于 Windows 操作系统的 MFC 项目中呈现 SVG 文件。

在这种情况下,Microsoft Browser Web Browser ActiveX Control 被发现是一个理想的解决方案。

在此处输入图像描述

这是使用浏览器控件加载 SVG 文件的结果。

使用浏览器控件渲染 SVG 文件

于 2020-09-29T11:08:26.910 回答