fabric.js 介绍IText

JavaScript09

fabric.js 介绍IText,第1张

fabric.js是一个canvas的框架,可以快速的渲染文字,图片,线条,长方形,正方式,滤镜,动画等功能,下面就让我们来看看fabric.js怎么绘制一个可编辑的文字:

首先在html中创建一个canvas标签

到这里渲染文字就完成了,fabric.js绘制一个可编辑,拉伸,缩放,旋转,移动的文字就好了。

初次写文章希望大家喜欢,也希望大家指点错误,也可以加入qq群439667347,大家一起讨论,一起进步,后续更新中...

fabric.js

使用Fabric 一段时间了,总得来说,是一款非常强大的矢量图工具,官方文档也算丰富,但文档组织形式不太好,而且少部分api设计不太一致,还是需要整理一下。

canvas是最基础的对象,针对

标签做的封装,可以管理内部绘制的所有对象。

这个canvas对象,并不是DOM里的元素,如果需要控制dom,或者对应的context,还是需要自己获取的。

新建canvas对象的时候,可以指定宽高:

这里指定的宽高会覆盖css中设置的。注意这种创建对象的形式,Fabric.js里基本上都是类似的,类名表示要创建的对象类型,第一个参数是必要的数据,第二个参数是各种选项。

所有对canvas的修改,包括在其中添加删除对象,以及对象参数的修改,都需要调用渲染方法才能显示出来:

线条-Line, 圆-Circle, 矩形-Rectangel等几何图形,都属于基本形状。

所有基本形状,都有对应的类,这样就可以通过类实例的属性和方法来控制它们的位置、颜色、大小等样式。所有类都继承自Object类,有一些公共的属性和方法。

下面是画线的例子(给出两个顶点坐标):

画圆的例子(顶点和半径是在选项里的),这里left和top其实就是(x,y),应该是借用了css里的命名。

从这里可以看出,和创建canvas类似,第一个参数是这个类专用的(比如画直线的时候传的起止点坐标),第二个参数是通用选项,如果没有专用参数,那么第一个参数就直接是通用选项。所有创建完的形状,只有通过canvas的add方法加入创景,才能显示出来。

left和top是每种Object都有的属性,至于它到底指图形中哪一个点的坐标,由originX和originY这组参数决定,它们相当于文本编辑软件里的对齐方式,originX有三种可选值:left,center, right;originY也有三种可选值:top, center, bottom。

它们的示意图如下:

不同锚点示意

如果希望每种对象缺省原点都在中心,可以这样设置:

width和height也是可以直接存取的属性,顾名思义,表示长和宽(所有形状都是有外接矩形的,所以可以用长和宽来控制大小)。

除了上面那几个可以直接存取的属性,大部分属性需要使用get/set方法读写,比如:

网上有些文章会写成line.stroke=color,或者line.setProperty('stroke',color)这样的形式,都是不能生效的,可能是早期版本的表达方式。

Image跟其他形状类似,都是Object的子类,最大的区别在于,图像文件的加载是异步的,所以对Image的后续操作,都要在回调中完成。

Fabric.js 提供了2个方法删除对象。

一个是 直接删除 ,另一个方法是 带过渡动画 删除元素(淡出动画)。

本文重点讲 带过渡动画 删除元素的方法,还会讲到设置 过渡时长 、删除后的 回调函数 等知识点。

删除元素的2种方法:

设置动画时长:

remove 很好理解,就是删除的意思。里面传入元素对象即可。

在 canvas.renderOnAddRemove 为 true 的情况下,使用 canvas.remove 删除元素后,画布会自动刷新。

canvas.renderOnAddRemove 默认值是 true

如果 canvas.renderOnAddRemove = false ,使用 canvas.remove 后,元素是删除了,但画布上还能看到元素。

此时需要手动执行 canvas.renderAll() 或者其他刷新方法,刚刚被删的元素才会从画布上(视觉上)消失。

fxRemove 是一个带过渡动画的删除方法,使用该方法删除的对象会淡出,直至消失。

这个方法 第一个参数 是要删除的对象;

第二个参数 是回调对象,这个对象里有2个值,是类型函数。

分别是 onChange 和 onComplete 。

canvas.FX_DURATION 可以设置过渡动画的时长。

默认值是 500 ,单位是 毫秒

修改后 canvas.FX_DURATION 后,再试试 canvas.fxRemove ,删除元素的过渡时长就是你设置的时长。

⭐《Fabric.js 将本地图像上传到画布背景》

⭐《Fabric.js 从入门到膨胀》

《Fabric.js 渐变效果(包括径向渐变)》

《Fabric.js 3个api设置画布宽高》

⭐《Fabric.js 自定义右键菜单》

《Fabric.js 更换图片的3种方法(包括更换分组内的图片,以及存在缓存的情况)》

如果本文内容对你有所帮助,也请你帮我点个赞呗