如何在SVG中实现橡皮擦功能?
我认为 SVG 在某些功能上比 HTML5 canvas 更好,但我无法想象一种简单的方法来实现橡皮擦功能。 我有什么方法或例子吗?
I think SVG is better than HTML5 canvas for some features, but I can't imagine an easy way to make eraser function.
I there any way or any example?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这是一种非常笨拙的方法,但您可以简单地用白色描边模仿标准钢笔工具。
This is a really janky way of doing it, but you could simply mimic your standard pen tool with a white stroke.
在查看了许多示例(包括 Geert Bellemans 的回答)之后,我终于想出了这段有效的代码。要使用橡皮擦,您需要绘制新的圆圈并将它们附加到节点内。要绘制新的线条/形状,请将它们附加到节点内。这里是:
After looking at many examples (including Geert Bellemans answer here), I finally came up with this code that works. To use the Eraser, you draw new circles and append them inside the node. To draw new lines/shapes, you append them inside the node. Here it is:
您可以使用 ClipPath 元素。将橡皮擦绘图放入clipPath 元素内,然后剪裁要用橡皮擦覆盖的绘图。这样背景就保持可见。
You could use the clipPath element. Put your eraser drawing inside a clipPath element and clip the drawing you want to overlay with the eraser. This way the background stays visible.
您可以将
display
属性设置为"none"
来重绘对象,请参阅此处 或 这里
You could redraw objects with
display
attribute set to"none"
See here or here