我正在開發一個程序,可以根據用戶的選擇生成svg文件。其中一個選擇是在第一個特定點上包含另一個svg文件。第二個文件具有未知的寬高比和大小,但它應該按比例縮放到特定的最大大小,不管是作爲高度還是寬度,並且應該集中在一個特定點上。 我現在使用的方法是使用包含所包含圖像的SVG標籤的G標籤,並對G標籤執行轉換以進行縮放和平移。 有沒有什麼辦法可以在不知道圖像大小的情況下執行縮放以獲取特定尺寸? 有什麼辦法讓翻譯的座標適用於圖像的中心而不是左上角? 我對SVG很新,所以可能是我以錯誤的方式去解決這個問題。有沒有更好的方法來獲得相同的結果?如何在另一個SVG文件中居中並縮放SVG文件
回答
我想你想先有其他SVG文件隱藏, 呼叫.getBBox()在JavaScript 做一些簡單的計算, 設置相應的參數, 取消隱藏
我明白你的意思,或者至少我認爲。在我的腦海裏沒有更好的想法來做到這一點,而不是分組。對我而言,<g>
是使用SVG文檔的一個片段進行操作的最佳方式。但在我看來,將<rect>
元素視爲您的視覺數據的容器。也許那麼<g>
就沒有必要,取決於你的編碼要求。
如果你需要把只有簡單的SVG圖像,你可以不喜歡它:
<image id="yourSVGImage" xlink:href="yourImg.svg"
x="24px" y="50px" width="527px" height="328px"
preserveAspectRatio="XMinYMin meet"/>
如果你表達「寬度」和固定單位「高度」(如像素),你會達到什麼我」我認爲你需要。如果你需要的話,還有「preserveAspectRatio」來看看這個屬性。
編輯:這個答案stil要求你知道內部SVG的大小。最分開的方法是在瀏覽器端使用getBBox()方法,可能使用visibility
或display
來防止用戶看到未縮放的圖形。 jsFiddle example已更新爲使用此方法。
對於縮放,請使用viewBox attribute。從W3C的文檔:
通常需要指定給定的一組圖形拉伸以適應特定的容器元素。 'viewBox'屬性提供了這個功能。
所有建立新視口(參見elements that establish viewports)的元素都具有屬性'viewBox'。 'viewBox'屬性的值是一個包含四個數字的列表
<min-x>
,<min-y>
,0<width>
和<height>
,...,它們在用戶空間中指定一個矩形,該矩形應映射到由給定元素建立的視口的邊界,帳戶attribute ‘preserveAspectRatio’。Example ViewBox說明了在最外面的svg元素上使用'viewBox'屬性來指定SVG內容應該伸展以適應視口邊界。
上面的示例將preserveAspectRadio
指定爲none
,因此嵌入式SVG會精確地適應容器SVG。默認值preserveAspectRadio
,即xMidYMid meet
,應該符合您的需求。該屬性允許您對how to scale and position the enclosed graphics進行細化控制。
將內部SVG縮放到已知大小(viewBox
)後,居中應該是一個簡單的計算問題,並正確使用transform
屬性。這裏距離http://jsfiddle.net/ento/hPuBY/剝離下來的例子:
<g transform="translate(125, 125)">
<!-- inner SVG is scaled to fit 150x150 -->
<svg width="150" height="150" viewBox="0 0 1500 1000">
<!-- coordinate system inside the SVG is 0x0 <> 1500x1000 -->
<rect width="1500" height="1000" />
<text x="750" y="550" font-size="150">
Embedded SVG
</text>
</svg>
</g>
- 1. 當圖像是另一個SVG文件時縮放SVG圖像元素
- 2. 對齊SVG縮放和中心加載的SVG文件
- 3. 如何在Android中顯示「可縮放」的SVG文件?
- 4. 如何使用html div將svg放在另一個svg中?
- 5. 縮放SVG在HTML5或SVG文件或CSS
- 6. 使用JS縮放和居中SVG
- 7. 如何在highchart中縮放縮放事件的svg路徑?
- 8. 如何將一個縮放的SVG元素居中在一個點上?
- 9. 如何合併多個SVG文件?
- 10. 在WinRT中繪製一個SVG文件
- 11. 如在縮放SVG
- 12. SVG文本不居中firefox
- 13. 如何將放大縮小控件添加到SVG文件
- 14. 如何讓IIS壓縮.svg文件?
- 15. SVG縮放到組件
- 16. 在SVG文件
- 17. 如何將UIWebView中顯示的SVG文件的元素居中?
- 18. 在Android中縮放SVG?
- 19. 在Java中縮放SVG
- 20. Android:在WebView中縮放SVG
- 21. 在Java中縮放時看到SVG文件的像素
- 22. 如何縮放SVG rectagle以適合svg文本元素
- 23. 力 '另存爲' SVG文件
- 24. 如何在jsp中創建svg文件?
- 25. 如何在iOS中打開.svg文件?
- 26. SVG遊戲中的SVG文件?
- 27. 在svg中居中一個字符
- 28. IOS顯示SVG文件,縮放,並添加這些標記
- 29. SVG:如何在我的SVG中放置我的文本路徑?
- 30. 如何在C#中創建SVG文件並在iTextSharp pdf中導入文件?
這是一個恥辱有沒有答案這個問題,可能是它應該是更具體的或者重新標記? – Parsa 2010-01-31 18:21:13