我正在研究根據訪問者的屏幕分辨率從SVG文件生成jpg牆紙的PHP腳本。該壁紙由圓形漸變(矩形)背景和頂部的路徑組成。你會如何將這條路徑水平和垂直定位到矩形?請記住,矩形的大小和比例不是一個常數。我應該將背景和路徑分開到不同的svg文件還是有一個簡單的方法來中心路徑?也許是一個框架?以編程方式居中svg路徑
0
A
回答
3
這很容易通過使用嵌套的<svg>
元素和preserveAspectRatio
屬性來實現。把你的背景放在外面的svg和你的內在路徑中。
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="100%" height="100%">
<rect id="background" width="100%" height="100%" fill="grey"/>
<svg preserveAspectRatio="xMidYMid meet" viewBox="0 0 30 40" width="100%" height="100%">
<g>
<circle cx="15" cy="20" r="10" fill="yellow"/>
<circle cx="12" cy="17" r="1.5" fill="black"/>
<circle cx="18" cy="17" r="1.5" fill="black"/>
<path d="M 10 23 A 8 13 0 0 0 20 23" stroke="black" stroke-width="2" fill="none"/>
</g>
</svg>
</svg>
運行這段代碼,並嘗試調整窗口的大小。
爲了達到此目的,您需要確保內部<svg>
元素上的viewBox屬性已正確設置。
0
如果知道路徑的座標,您可以將x/y座標的總和除以座標的數量,這會給出座標集的平均位置。然後,通過平方的寬度/高度的一半的座標加上任何偏移量,減去座標集的中心與平方的寬度/高度的一半之間的差值來偏移每個座標。
這應該會導致您的座標位於廣場的中心,我認爲(這是相當早,我剛開始第一杯咖啡,所以我可能是錯的)。這當然假設您知道所有變量(方形的寬度/高度,所應用的偏移量和路徑的座標)。
0
邊界框svgElement.getBBox()可能會有所幫助。
相關問題
- 1. 以編程方式合併兩個svg路徑元素
- 2. 以編程方式編輯路徑
- 3. 以編程方式訪問Raphael路徑
- 4. 以編程方式繪製路徑
- 5. 以編程方式居中按鈕
- 6. 以編程方式居中WebView
- 7. 如何確定SVG路徑鄰居?
- 8. 如何以編程方式轉換SVG
- 9. Java - 從SVG到PNG以編程方式
- 10. 以編程方式在Jersey中聲明路徑參數
- 11. 以編程方式在Magento中添加麪包屑路徑?
- 12. 以編程方式在IIS7中設置「啓用父路徑」C#
- 13. 在dojo中以編程方式傳遞小部件路徑?
- 14. 以編程方式在磁盤中獲取Anylogic模型路徑
- 15. 以編程方式確定UNC路徑中的可用空間
- 16. Loopback如何以編程方式獲得方法路徑
- 17. Bootstap Modal - 設置遠程路徑並以編程方式打開
- 18. 以編程方式向Matlab路徑永久添加路徑列表
- 19. svg動畫路徑方向
- 20. 以編程方式查找Cassandra ssttable路徑
- 21. 以編程方式設置類路徑文件Java
- 22. 以編程方式跟蹤SD卡文件的路徑
- 23. 以編程方式確定路徑是否受限制
- 24. Python - 以編程方式獲取文件路徑?
- 25. ASP.NET主題以編程方式:圖片路徑
- 26. 以編程方式獲取nuget包的路徑
- 27. 如何以編程方式查找ASP.NET App_Data文件夾路徑
- 28. 以編程方式創建的節點不會收到路徑
- 29. 以編程方式獲取/data/data/my.app/files路徑?
- 30. 以編程方式設置Logback Appender路徑
歡迎來到S.O.此社區旨在幫助您解決特定問題和您嘗試的代碼。你有什麼試圖解決你的問題? –