2010-11-14 139 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編譯並在幾個小時內工作。這是非常基本的,但它完成了工作。