【发布时间】:2022-01-20 18:04:33
【问题描述】:
我有一个形状的 SVG,定义为多边形。多边形是否可以包含另一个 SVG?
<polygon class="st6" points="" fill="#7A5852" stroke="#000" stroke-width="1">
<path style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m 1.929352,294.56951 c 1.2122153,-1.12193 2.2223419,-0.25968 2.4054258,0.43431" id="path1400" />
</polygon>
上面多边形内部的路径不渲染。
谢谢
更新:这是浏览器的完整组装输出。它在 IE 中显示为带有黑色边框的棕色十六进制,但元素之后的路径不会呈现静止。我还是做错了:)
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 2410 1192" style="enable-background:new 0 0 2410 1192;" xml:space="preserve">
<g id="NEW" class="st5">
<polygon class="st5" points="247.8,37.9 223.8,37.9 211.7,58.9 223.8,79.9 247.8,79.9 259.8,58.9" fill="#7A5852" stroke="#000" stroke-width="1"/>
<path style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m 1.929352,294.56951 c 1.2122153,-1.12193 2.2223419,-0.25968 2.4054258,0.43431"/>
<path style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m 0.19209997,295.56342 c 1.15764233,-1.7538 2.25748843,-1.04164 3.34922123,0.0167"/>
<path style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m 0.7349912,293.93474 c 0.9089636,-1.1574 1.6844633,-0.98694 2.372017,0.0585" />
</g></svg>
看起来路径上的“d”属性不在其中,因此它在其他地方渲染了山丘……需要找出如何让这些数字自动排列,可以将它们分组还是建立它们的东西要渲染的区域?
最终更新: 好的,我一直在跟进上面堆叠元素的想法。我遇到的问题是我的路径是与我的多边形分开制作的。不了解点和路径“d”属性会导致混乱。这是一个尝试有一个空白的六边形(多边形),里面有变化的图标(路径),但是,它们从来没有排成一行。相反,我将它们合并到inkscape(svg编辑器)中,然后将生成的3行(十六进制和图标更正)现在一起使用......这样点和其他值都对齐。在我看来,这并不是完全最优的,但这确实有效,而且不是非常笨重。
if($land_rand == 1){
//Mountains
}elseif($land_rand >= 2 AND $land_rand <= 3){
//Hills
echo "<polygon class='st5' points='{$points}' fill='#7a5852'
stroke='#000000' stroke-width='1'/>";
echo "<path style='fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.17463px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1'
d='m 234.07215,60.015884 c 8.88334,-10.342263 16.28579,-2.393802 17.62744,4.003591'/>";
echo "<path style='fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.17463px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1'
d='m 221.34114,69.178024 c 8.48351,-16.167017 16.54337,-9.602128 24.54388,0.153945'/>";
echo "<path style='fill:none;stroke:#000000;stroke-width:2.17463px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1'
d='m 225.31963,54.164398 c 6.66105,-10.669236 12.34408,-9.097888 17.3826,0.539269' />";
}else{
//Blank Land
echo "<polygon class='st5' points='{$points}' fill='#7a5852'
stroke='#000000' stroke-width='1'/>";
echo "<path style='fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.17463px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1'
d='m 234.07215,60.015884 c 8.88334,-10.342263 16.28579,-2.393802 17.62744,4.003591'/>";
echo "<path style='fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.17463px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1'
d='m 221.34114,69.178024 c 8.48351,-16.167017 16.54337,-9.602128 24.54388,0.153945'/>";
echo "<path style='fill:none;stroke:#000000;stroke-width:2.17463px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1'
d='m 225.31963,54.164398 c 6.66105,-10.669236 12.34408,-9.097888 17.3826,0.539269' />";
}
【问题讨论】:
-
不,形状不能包含其他形状。您希望在这里实现什么目标?
-
多边形是一个十六进制,我希望在十六进制多边形内添加图标(我也有自己的 svgs)......所以这可能是一个代表土地的十六进制,并且在十六进制将是...例如山图标...
-
听起来您想创建一个模式并将其应用于多边形。或者,也可以先画一个大多边形,然后在上面画一些较小的东西作为兄弟。