当前位置: 首页 > 知识库问答 >
问题:

Fabric.js橡皮擦发行画布

樊宏义
2023-03-14

我想使用Fabric.js在我的web应用程序中实现eraser。在Fabric.js中有没有实现橡皮擦的方法?例如,如在MS Paint?

共有1个答案

顾光明
2023-03-14

Fabric中没有内置的橡皮擦,实现起来有点困难。

Fabric的特点是所有的东西都是基于对象的,大多数东西也是基于向量的。

与本机画布不同,我们不能只是擦除全局位图上的一些像素。我们有一个完整的对象模型,画布输出是所有这些对象呈现到画布上的一个简单循环

我们可以模仿橡皮擦的一种方法是在画布的顶部添加某种覆盖层。并在上面画上“抹去”的线条,给人一种潜在物体被抹去的错觉。

但这仍然有一些复杂的问题:

  • 如何序列化该层(到JSON或SVG)?
  • 如果您擦除了以前绘制的路径的一半,然后想要处理已经擦除的形状,该怎么办?形状本身需要修改;覆盖将无法工作。
  • 橡皮擦只影响形状还是影响背景颜色?背景图像怎么样?
 类似资料:
  • 我已经在谷歌上搜索了这个问题,并提出了各种解决方案。 但是,没有一个对我有效。 我在一个应用程序中有一个绘图画布。 画布的背景被设置为活动中的png图像,该活动使用自定义视图(drawView); 在DrawingView类(drawview是实例)中,我将绘制的路径存储在一个PathPaints集合中,该集合有3个属性(路径、使用的油漆以及如果是橡皮擦); 我已经尝试在drawpath上设置油漆

  • 我正在一个绘画应用程序,与撤消/重做功能,并希望添加橡皮擦功能。 橡皮擦上的代码怎么写得合适?(保留撤消/重做) 提前多谢!

  • 我已经创建了一个HTML5绘图应用程序,它具有基本功能,允许用户选择一种颜色来绘制,改变绘图工具的大小(半径),撤消,重做,以及完全清除画布。 我最近添加了一个橡皮擦工具,使用globalCompositionProperty(desitnation-out)擦除画布的选定区域。这部分工作良好,但当我去撤销擦除,整个画布被清除,重做功能不起作用。当我用常规的绘图工具(使用source-over)恢

  • 在画布上画画是非常好的。即使橡皮擦也能工作得很好。问题是当画布保存为图像时,它画的是黑线,而不是橡皮擦。 为了更好地理解,我添加了屏幕、镜头和代码。 1.在擦除图的同时- 我不明白为什么橡皮移动被替换为黑色,而保存画布作为一个图像。

  • 我试图将一个半透明的橡皮刷写进我正在开发的应用程序中,但发现了两个问题,这取决于它的实现方式。希望有一个解决办法,我可以指出。 代码示例在mono droid/xamarin中 所以,我通常有一个设置,在画布上绘制路径。我的视图的方法绘制它的基本位图,然后在其上绘制我的路径。 有人有什么东西我可以看一下,可以提出解决方案吗?Java很好,因为它很容易移植到C#。 多谢!奈杰尔

  • 这是我的密码。现在钢笔绘图工作,橡皮擦绘图擦除,但它擦除背景图像。我只想让它擦去钢笔。 如果你能给我提示该怎么做,我将不胜感激。 === ====