2012-04-22 34 views
12

我正在研究一些小遊戲的圖形。圖形將是SVG,並將大部分是基於圖塊的(例如,塞爾達傳說:鏈接到SNES的過去)。我畫了一個小草地磚,並希望在整個場地上覆制這個NxM次。在Inkscape或其他GUI SVG編輯工具中執行此操作會導致文件大小超過3.5MB,大於相同尺寸的32位位圖。SVG:我可以引用相同的元素/組/路徑而不是多次複製它嗎?

我想知道,如果它可以定義某種形式的「草磚」的對象,而不是將其複製到我這個領域的每個點,只需用相應的座標引用它。我意識到,這仍然會導致場景在加載時佔用相同數量的內存,但這意味着要在光盤上存儲更小的文件,並希望這將意味着更容易編輯,因爲在這種情況下,如果我想更改,例如,我的草地的顏色,我只需要改變我的原型對象而不是改變,然後在整個場地上重新複製新的瓷磚。

我曾經做過有關,我認爲可能幫助不同的關鍵字半打不同的搜索,但似乎沒有做什麼我要找的。我想使用'xlink:href'屬性,因爲我看到它在標籤中用於首先定義調色板,然後在包含變換數據的單獨標籤中引用它。

我嘗試使用類似:

<path id="grassyPatch" d="M 3.3310392e-7,608 31.993091,624 63.986183,608 31.993091,592 z" style="..." />

然後,帶着類似的東西複製:以多次複製到新的

<path id="grass-copy1" xlink:href="#grassyPatch" transform="translate(32,-32)" /> <path id="grass-copy2" xlink:href="#grassyPatch" transform="translate(32,-64)" />

等。位置。感謝有人能讓我知道這是否可能。我並沒有抱太大的希望,所以如果你也知道這是不可能,請讓我知道,所以我可以停止浪費我的時間。

謝謝!

+0

另外,不要忘記,SVG是一個開放的標準! [這裏](http://www.w3.org/TR/SVG10/)是該格式的確切的*官方*規範。這真的不那麼難以閱讀;非常像文件格式的API文檔。 – ulidtko 2015-01-02 23:44:18

回答

35

就快,你正在尋找做複印的元素/克隆<use>

<use xlink:href="#grassyPatch" transform="translate(32,-32)" />

+0

非常好!那肯定會派上用場。謝謝您的幫助。 – Ben 2012-04-22 09:06:56

+0

是的,什麼與窺視獲得很好的答案,而不是難以接受?跛腳鄰! – tim 2013-07-31 23:06:34

+0

這是一個很好的引導示範了''元素:http://taye.me/blog/svg/a-guide-to-svg-use-elements/ – 2015-12-18 23:56:39

1

你提到想要使用GUI工具來完成這一點,所以我想讓你知道這在Inkscape中是可能的。您需要使用位於複製工具旁邊工具欄上的克隆工具,或者可以按Ctrl-D。當您使用它時,克隆將直接放置在它所克隆的對象的頂部。只需使用移動工具將它放在你想要的地方。

Inkscape在保存對話框的文件類型下拉菜單中也有一個「優化的SVG」選項,它允許您通過刪除無關信息以及可選地降低精度來減少SVG的文件大小。

+0

這是不是改變XML,並與更多的選擇更容易。這裏還有一個很好的指南:http:// www。linuxformat.com/wiki/index.php/Inkscape_-_cloning_and_tiling – Simon 2016-12-05 13:14:37

相關問題