svg : ellipse to path 演示
<style>.mysvg { border: 1px solid gray; fill: none; stroke: steelblue; }
</style>
<svg class="mysvg" width="200" height="200">
<ellipse id="Ellipse" cx="100" cy="100" rx="90" ry="60"></ellipse>
</svg>
<svg class="mysvg" width="200" height="200">
<path id="ePath" d="M0 0 H200"></path>
</svg>
<div id="pathMsg"></div>
<script>
let createPath = (ele) => {
let cx = 1 * ele.getAttribute('cx'),
cy = 1 * ele.getAttribute('cy'),
rx = 1 * ele.getAttribute('rx'),
ry = 1 * ele.getAttribute('ry');
return `
M${cx-rx} ${cy}
A${rx} ${ry} 0 1 1 ${(cx + rx)} ${cy}
A${rx} ${ry} 0 1 1 ${cx-rx} ${cy}
`;
};
ePath.setAttribute('d',createPath(Ellipse));
pathMsg.innerText = createPath(Ellipse);
</script> 左边是 ellipse 标签绘制的椭圆,右边是 path 标签根据 ellipse 相关属性值绘制的椭圆。完整代码:
<style>
.mysvg { border: 1px solid gray; fill: none; stroke: steelblue; }
</style>
<svg class="mysvg" width="200" height="200">
<ellipse id="Ellipse" cx="100" cy="100" rx="90" ry="60"></ellipse>
</svg>
<svg class="mysvg" width="200" height="200">
<path id="ePath" d="M0 0 H200"></path>
</svg>
<div id="pathMsg"></div>
<script>
let createPath = (ele) => {
let cx = 1 * ele.getAttribute('cx'),
cy = 1 * ele.getAttribute('cy'),
rx = 1 * ele.getAttribute('rx'),
ry = 1 * ele.getAttribute('ry');
return `
M${cx-rx} ${cy}
A${rx} ${ry} 0 1 1 ${(cx + rx)} ${cy}
A${rx} ${ry} 0 1 1 ${cx-rx} ${cy}
`;
};
ePath.setAttribute('d',createPath(Ellipse));
pathMsg.innerText = createPath(Ellipse);
</script>
绘制椭圆,用到四个关键参数(属性):
cx : 定义的椭圆中心的x坐标
cy : 定义的椭圆中心的y坐标
rx : 定义的水平半径
ry : 定义的垂直半径
一楼演示的椭圆变路径,与昨天的圆变路径道理相同,都是用圆弧指令 A(a)来实现最终效果,二者的区别仅在于,处理椭圆时需要考虑两个半径。 这个和前面的圆一样,都是一个用相应标签直接绘制,一个是用路径绘制的{:4_187:} 学习了,感谢黑黑的教学{:4_187:} 红影 发表于 2023-9-30 12:40
学习了,感谢黑黑的教学
不客气 红影 发表于 2023-9-30 12:40
这个和前面的圆一样,都是一个用相应标签直接绘制,一个是用路径绘制的
这一系列的帖子,将svg基本图形都用path转换一次,这是很有价值的 祝你阖家欢乐、幸福安康。 马黑黑 发表于 2023-9-30 13:08
不客气
黑黑差不多把svg的路径都讲了一遍呢,辛苦了{:4_204:} 马黑黑 发表于 2023-9-30 13:09
这一系列的帖子,将svg基本图形都用path转换一次,这是很有价值的
嗯,现在知道了,它的基本图形也可以用path的方式表述的。 红影 发表于 2023-9-30 15:47
嗯,现在知道了,它的基本图形也可以用path的方式表述的。
path是万能的 红影 发表于 2023-9-30 15:45
黑黑差不多把svg的路径都讲了一遍呢,辛苦了
指令都讲过了,A指令不想重复了。现在要做的是svg基本图形转路径,基本也做完,难度最大的 rect 也杀青了。 梦油 发表于 2023-9-30 15:02
祝你阖家欢乐、幸福安康。
谢谢。一样祝你 马黑黑 发表于 2023-9-30 17:31
谢谢。一样祝你
我们一起开心,我们一起欢乐。 看不懂,只是来点赞的。 小水瓢 发表于 2023-9-30 17:52
看不懂,只是来点赞的。
感谢 梦油 发表于 2023-9-30 17:43
我们一起开心,我们一起欢乐。
如此最好 马黑黑 发表于 2023-9-30 17:20
path是万能的
那也要有本事驾驭它{:4_173:} 马黑黑 发表于 2023-9-30 17:22
指令都讲过了,A指令不想重复了。现在要做的是svg基本图形转路径,基本也做完,难度最大的 rect 也杀青了 ...
黑黑讲得这么系统这么完整,很赞{:4_199:} 马黑黑 发表于 2023-9-30 18:30
如此最好
是啊,进了花潮门就是一家人嘛。
页:
[1]
2