具有不透明度的SVG z顺序< 1

时间:2012-09-08 21:31:15

标签: svg opacity z-order

我正在构建一个SVG图像(树图,带有节点的椭圆),我想用线条连接椭圆,但我希望这些线从椭圆的开始。由于计算边缘下降的位置以及开始或结束线条是非常困难的,我从椭圆的中心绘制线条并寻找将椭圆叠加在线条上的方法,这样它就会掩盖重叠部分,使线条的外观仅在椭圆的边缘开始。因为SVG通过元素顺序实现z顺序,如果我首先创建连接线然后再创建省略号,那么除了...之外我会创建连接线。

...我希望椭圆为蓝色或红色,填充不透明度=“0.15”,但是当我这样做时,线条显示出来。当然,有意义的是,低透明度的东西不能完全掩盖它覆盖的东西,但我无法弄清楚如何能够得到我想要的效果。我找到了一个有效的解决方案:对于我想要的每个椭圆,我首先创建一个相同大小和位置的椭圆,白色填充和不透明度为1,并且将连接线完全遮盖它们重叠的位置。然后我在白色椭圆上叠加我真正想渲染的椭圆,蓝色或红色填充和0.15的不透明度。这看起来像我希望它看起来的方式,但它感觉kludgy。我有一个优雅的解决方案吗?

2 个答案:

答案 0 :(得分:0)

您可以使用剪裁或屏蔽。

绘制整条线条,但将它们剪辑到除椭圆之外的所有内容。

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

答案 1 :(得分:0)

在白色背景下呈现fill-opacity之后,您需要获得颜色。

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

的填充颜色