0

我正在构建一个 SVG 图像(树形图,带有节点的椭圆),我想将椭圆与线条连接起来,但我希望线条从椭圆的边缘开始。由于计算边缘落在哪里以及确切地开始或结束线条非常困难,我正在从椭圆的中心绘制线条并寻找一种方法将椭圆叠加在线条上,以便它掩盖重叠部分,使线条看起来只从椭圆的边缘开始。因为 SVG 通过元素顺序实现 z 顺序,所以如果我先创建连接线然后创建椭圆,则可以,除了...

...我希望椭圆为蓝色或红色,填充不透明度 =“0.15”,但是当我这样做时,线条会显示出来。当然,低不透明度的东西不能完全掩盖它所覆盖的东西是有道理的,但我很难弄清楚如何才能获得我想要的效果。我找到了一个可行的解决方案:对于我想要的每个椭圆,我首先创建一个大小和位置相同的椭圆,白色填充和不透明度为 1,并在它们重叠的地方完全掩盖连接线。然后我将我真正想要渲染的椭圆叠加在白色椭圆上,填充蓝色或红色,不透明度为 0.15。这看起来是我想要的样子,但感觉很笨拙。有没有我忽略的优雅解决方案?

4

2 回答 2

0

您可以使用剪辑或蒙版。

一直画线,但把它们剪到除了椭圆之外的所有地方。

http://www.w3.org/TR/SVG/masking.html

于 2012-09-08T21:45:29.717 回答
0

您需要在将颜色渲染fill-opacity为白色背景后获取颜色。

截取 SVG 的屏幕截图,在 Photoshop 等图形编辑程序中打开它,使用吸管工具检查渲染颜色并复制十六进制值。然后将其用作填充颜色fill-opacity="1"

于 2012-09-08T21:47:05.340 回答