【发布时间】:2014-07-03 16:28:24
【问题描述】:
我有一个包含如下图像对象的 fabric.js 画布:
我可以用几种颜色/画笔在该图像上绘图,但我不想在黑色线条/像素上绘图。这是因为它描述了我图像上的墙壁。
所以如果我例如在画布上画一些红色,它应该是这样的:
如您所见,黑线应该持续存在。但最大的问题是:我如何在 fabric.js 中做到这一点?
我能想到两种解决方案:
- 在 fabric.js 代码中找到您绘制的位置。添加一个检查 if(this_pixel_is_black){ 不做任何事情 }else{ 绘制像素.. }
- 制作一个遍历源图像每个像素的 (PHP) 脚本。如果是黑色像素,则会在新的透明画布上绘制。保存该图像,并将其添加到另一个 fabric.js 图像之上。然后,当用户绘制时,它应该在顶部的透明画布下方绘制它。
你有更好的想法吗?而且我不知道如何实施我的两个建议。
【问题讨论】:
-
只是一般的想法 - 使用 3 层(画布)怎么样:去除黑色的背景、绘图层和只有黑色背景的顶层。这样在第二层画出你想要的任何东西,黑色总是在上面。
-
@ViliusL 这也是我建议为“解决方案 2”的解决方案。最终我实施的解决方案。效果很好!有关更多信息,请参阅我的以下答案。
标签: javascript fabricjs