如何用SVG创建该半圆图形?寻求无需旋转的path元素实现方案

我尝试了以下代码,但它过于复杂,且在网页中显示时存在兼容性问题。
如何用SVG创建上述形状?最好仅使用path元素,且无需进行旋转操作。
我之前的代码:
<svg width="28.149193mm" height="47.310486mm" viewBox="0 0 28.149193 47.310486" version="1.1" id="svg5" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"> <defs id="defs2" /> <g id="layer1" transform="translate(-45.804437,-101.49194)"> <path style="fill:#000000;stroke:#ff0000;stroke-width:3;stroke-dasharray:none;stroke-opacity:1" id="path346" d="m -147.30242,72.453629 a 22.155243,25.149193 0 0 1 22.15524,-25.149193 22.155243,25.149193 0 0 1 22.15524,25.149193 h -22.15524 z" transform="rotate(-90)" /> </g> </svg>
简化后的解决方案:
<svg width="28.149193mm" height="47.310486mm" viewBox="0 0 28.149193 47.310486" version="1.1" xmlns="http://www.w3.org/2000/svg"> <path style="fill:#000000;stroke:#ff0000;stroke-width:3;stroke-opacity:1" d="M 28.149193, 0 L 5.99395, 0 A 22.155243, 23.655243 0 0 0 5.99395, 47.310486 L 28.149193, 47.310486 Z" /> </svg>
说明:
- 移除了冗余的
<defs>和<g>元素,精简了代码结构 - 直接在SVG的viewBox坐标系下绘制路径,完全不需要旋转、平移等变换:
M 28.149193, 0:定位到形状的右上角L 5.99395, 0:绘制水平线到左侧椭圆弧的右端点(计算方式:28.149193 - 22.155243 = 5.99395)A 22.155243, 23.655243 0 0 0 5.99395, 47.310486:绘制左侧的半椭圆弧,其中rx是水平半径,ry是垂直半径(等于总高度的一半),参数确保绘制出符合要求的弧形边缘L 28.149193, 47.310486:绘制水平线回到右下角Z:闭合路径,自动连接回起点完成形状
这个版本代码更简洁,没有复杂变换带来的兼容性问题,完全满足「仅用path元素、无旋转操作」的要求。
内容的提问来源于stack exchange,提问作者ServerBloke
相关产品推荐
相关产品推荐

