这个演示展示了怎么开始使用自定义控制API。 第一个例子展示了为了控制怎么去写一个自定义绘制方法,以及怎么去定义一个自定义动作来响应鼠标。 新的API提供了如下鼠标能力:
- 鼠标按下(mousedown)
- 鼠标释放(mouseup)
- 鼠标移动 (mousemove)
以及去运行自定义代码:
- 位置
- 绘制
- 光标风格
1.建立控件
我们创建一个新的控件并将其添加到对象中。
要创建控件,我们使用 javascript>new fabric.Control(options)
。
在这里,我们希望控件的位置接近对象的右上角经典控件,因此我们将 x
设置为 0.5,即对象边界框的最右端。同样地,将 y
设置为 -0.5。我们不希望它与当前的右上角重叠,因此添加一个正数的 offsetY
,这样会让它向下稍微偏移一些。
我们希望控件渲染一个图标,而不是 Fabric 支持的圆形或方形,因此需要为控件提供自定义的渲染函数。该函数会接收画布的上下文作为第一个参数,因此简单的 drawImage
调用就可以实现图像绘制。
对于自定义操作,我们仅希望删除对象。我们构建一个符合 mouseUpHandler
的函数,并在其中使用 javascript>canvas.remove(target)
。
Adding a clone control
我们来演示如何快速的控制去复制一个新的对象.
我们再次使用 javascript>new fabric.Control(options)
,并增加到名为 clone
的键值中.
当对象缩小太多时,具有偏移的拐角看起来不太好,因此让我们让这个图标保持在边界框之外的顶部。
对于克隆复制功能,我们只需执行 javascript>target.clone(function(cloned) { canvas.add(cloned) });