我正在创建一个交互式 d3 应用程序,该应用程序具有与 Bostock 的焦点/上下文刷亮示例非常相似的界面的一部分:
http://bl.ocks.org/mbostock/1667367
到目前为止一切正常,但这就是我想要做的。我想采用画笔范围未选择的上下文区域(底部图表)和高斯模糊画笔背景上的区域(以及它后面的 svg 图表路径和 x 轴)。基本上,我试图产生类似这样的效果:
http://bl.ocks.org/mbostock/4349545
但由于我的图表是一条路径而不是一堆小圆圈,所以我不能简单地更改所选区域的路径类。
我的解决方案是在画笔范围的左侧和右侧绘制几个矩形,并使用填充不透明度等设置这些矩形的样式,这会产生类似于画笔句柄示例的“去强调”效果。
然而,对于真正的高斯模糊,它似乎更棘手。我可以对区域本身进行 SVG 过滤器,但这只会模糊矩形的边缘(它不会对通过它们可见的所有内容应用模糊效果)。我的下一个解决方案是尝试从画布中获取 BackgroundImage 并对其进行模糊处理,就像您在此处看到的那样:
http://www.w3.org/TR/SVG/filters.html#AccessingBackgroundImage
但是为了我的生活,我无法让它工作。浏览器是否支持 BackgroundImage?我是否需要告诉 d3 重新调用我的一些页面元素以在我的画笔回调中重新绘制 svg 元素(因为它们是动态加载的)?有没有另一种方法可以做到这一点?