FabricJS7.0笔记

5-6版本有破坏性升级,很多obj和canvas的方法链更新,旧方法失效

1.对于整个canvas对象

负责管理画布上所有的对象(图形、图片、文本等),处理用户交互(如鼠标点击、拖拽、选择),并控制最终的渲染和输出

属性
属性名 用途说明
_activeObject 当前画布上唯一被激活(选中)的对象。
_objects 存储画布上所有对象的数组。
_offset 画布元素相对于文档左上角的偏移量,包含 lefttop
allowTouchScrolling 是否允许在触摸设备上通过拖拽来滚动画布。
altActionKey 指定哪个修饰键(如 'altKey', 'shiftKey')可以触发对象的替代变换操作。
altSelectionKey 指定哪个修饰键可以在目标对象重叠时,允许选择被覆盖的对象。
backgroundColor 画布的背景颜色。
backgroundImage 画布的背景图片对象。
backgroundVpt 如果为 false,背景图片将不受视口变换(如缩放、平移)的影响。
centeredKey 指定哪个修饰键可以启用以对象中心为原点进行变换。
centeredRotation 如果为 true,对象将围绕其中心点进行旋转。
centeredScaling 如果为 true,对象将围绕其中心点进行缩放。
clipPath 一个 fabric.Object,用于定义画布的裁剪区域。
containerClass 包裹画布的 div 元素的默认 CSS 类名。
controlsAboveOverlay 如果为 true,对象的选择框和控制点将绘制在覆盖层(overlay)之上。
defaultCursor 画布的默认鼠标光标样式。
destroyed 如果为 true,表示画布实例已被销毁。
disposed 如果为 true,表示画布实例正在被销毁的过程中。
elements 一个 CanvasDOMManager 实例,用于管理画布相关的 DOM 元素。
enablePointerEvents 如果为 true,将使用原生的 PointerEvent 而不是 Fabric.js 封装的事件。
enableRetinaScaling 如果为 true,画布会根据设备的像素比进行缩放,以在视网膜屏幕上获得更清晰的渲染效果。
fireMiddleClick 是否触发鼠标中键点击事件。
fireRightClick 是否触发鼠标右键点击事件。
freeDrawingBrush 自由绘图模式下使用的画笔对象。
freeDrawingCursor 自由绘图模式下的鼠标光标样式。
height 画布的逻辑高度(像素)。
hoverCursor 鼠标悬停在对象上时的光标样式。
imageSmoothingEnabled 是否启用图像平滑处理。
includeDefaultValues 在序列化对象时,是否包含默认属性值。
isDrawingMode 如果为 true,画布进入自由绘图模式。
moveCursor 移动对象时的鼠标光标样式。
notAllowedCursor 当操作不被允许时(如禁用角落的控制点)的光标样式。
overlayColor 画布的覆盖层颜色。
overlayImage 画布的覆盖层图片对象。
overlayVpt 如果为 false,覆盖层图片将不受视口变换的影响。
patternQuality 在 Node.js 环境下控制图案的渲染质量。
perPixelTargetFind 如果为 true,对象检测将基于像素级别而不是边界框,可以实现更精确的点击检测。
preserveObjectStacking 如果为 true,对象被选中时不会自动移到最顶层,保持原有的堆叠顺序。
renderOnAddRemove 如果为 true,在添加或移除对象后会自动重新渲染画布。
selection 如果为 true,启用框选功能。
selectionBorderColor 选区边框的颜色。
selectionColor 选区的填充颜色。
selectionDashArray 选区边框的虚线样式。
selectionFullyContained 如果为 true,只有完全被选区矩形包含的对象才会被选中。
selectionKey 指定哪个或哪些修饰键可以启用多选。
selectionLineWidth 选区边框的线宽。
skipOffscreen 如果为 true,将跳过渲染完全在视口之外的对象,以提升性能。
skipTargetFind 如果为 true,将跳过目标对象检测,所有点击事件都不会关联到任何对象。
stopContextMenu 如果为 true,将阻止画布上的右键菜单弹出。
svgViewportTransformation 如果为 true,导出 SVG 时会应用视口变换。
targetFindTolerance 在检测目标对象时,围绕鼠标指针的容差像素数。
textEditingManager 用于管理文本编辑的实例。
uniformScaling 如果为 true,对象将被等比缩放。
uniScaleKey 指定哪个修饰键可以切换等比缩放功能。
viewportTransform 视口的变换矩阵,用于实现画布的平移和缩放。
vptCoords 当前视口边界在场景坐标系中的四个角点坐标。
width 画布的逻辑宽度(像素)。
方法
渲染与导出
方法名 用途说明
renderAll 立即重新渲染整个画布,包括背景、所有对象和覆盖层。
requestRenderAll 请求在下一个动画帧中重新渲染画布。这是性能更优的渲染方式,Fabric.js 会自动合并多次请求。
renderCanvas 在指定的 2D 上下文上渲染背景、对象和覆盖层。这是一个底层方法。
renderTop 仅渲染顶层画布,主要用于绘制对象的选择框和控制点。
clearContext 清除指定的 2D 绘图上下文。
toDataURL 将画布内容导出为一个 data URL 字符串(例如,一个 base64 编码的 PNG 图片)。
toBlob 将画布内容导出为一个 Blob 对象。
toCanvasElement 将画布内容导出为一个新的 HTMLCanvasElement 元素。
toSVG 将画布内容导出为 SVG 格式的字符串。
toJSON 将画布及其所有对象序列化为一个标准的 JSON 对象。
toObject 返回画布的对象表示形式,与 toJSON 类似。
toDatalessJSON 返回一个"无数据"的 JSON 对象,通常用于优化,例如将图片路径替换为 URL 而不是内嵌数据。
toDatalessObject toDatalessJSON 类似,但返回的是普通对象。
createSVGFontFacesMarkup 创建包含 SVG 字体定义的 <font-face> 标签的字符串。
createSVGRefElementsMarkup 创建包含 SVG 渐变、图案等引用元素的字符串。
createSVGClipPathMarkup 创建 SVG 裁剪路径的标记字符串。
drawClipPathOnCanvas 在画布上绘制裁剪路径。
对象管理

用于向画布添加、移除、查找和管理对象。

方法名 用途说明
add 向画布中添加一个或多个对象。
remove 从画布中移除一个或多个对象。
insertAt 在指定的索引位置插入一个或多个对象。
clear 清空画布上的所有对象。
getObjects 获取画布上所有对象的数组。
item 根据索引获取画布上的单个对象。
size 获取画布上对象的总数。
isEmpty 检查画布是否为空(即不包含任何对象)。
contains 检查画布是否包含某个特定对象。
forEachObject 遍历画布上的每个对象,并对每个对象执行一个回调函数。
collectObjects 根据一个边界框,收集所有与之相交或包含在内的对象,主要用于实现框选功能。
complexity 返回一个数字,代表画布上所有对象复杂度的总和。
moveObjectTo 将指定对象移动到堆叠顺序中的指定索引位置。
bringObjectForward 将指定对象在堆叠顺序中向上移动一层。
bringObjectToFront 将指定对象移动到堆叠顺序的最顶层。
sendObjectBackwards 将指定对象在堆叠顺序中向下移动一层。
sendObjectToBack 将指定对象移动到堆叠顺序的最底层。
findNewLowerIndex (内部方法) 计算对象向下移动时的新索引。
findNewUpperIndex (内部方法) 计算对象向上移动时的新索引。
loadFromJSON 从 JSON 数据中加载并恢复画布状态,这是一个异步方法。
clone 克隆整个画布实例,返回一个 Promise。
cloneWithoutData 克隆一个不包含任何对象数据的新画布实例,仅复制画布本身的设置(如尺寸)。
交互与事件

处理用户与画布的交互,如鼠标事件、对象选择和事件监听。

方法名 用途说明
on 为画布添加一个或多个事件监听器。
off 移除画布上的事件监听器。
once 添加一个只执行一次的事件监听器。
fire 手动触发一个自定义事件。
findTarget 根据鼠标事件,判断当前鼠标指针下的目标对象是什么。
searchPossibleTargets 在一组对象中搜索包含指定指针的第一个对象。
setActiveObject 将一个对象设置为画布上唯一的激活(选中)对象。
getActiveObject 获取当前画布上被激活的对象。
getActiveObjects 获取当前画布上所有被激活的对象数组(用于多选)。
discardActiveObject 取消当前所有对象的激活(选中)状态。
setCursor 设置画布的鼠标光标样式(如 move, pointer 等)。
endCurrentTransform 结束当前正在进行的变换操作(如拖拽、缩放)。
fireEventFromPointerEvent 将一个原生的指针事件转换为 Fabric.js 的事件并触发。
removeListeners 移除所有事件监听器,通常在销毁画布实例时调用。
视图与坐标

用于控制画布的视口(如缩放、平移)以及进行坐标转换。

方法名 用途说明
setZoom 设置画布的缩放级别。
getZoom 获取画布当前的缩放级别。
zoomToPoint 以指定的点为中心进行缩放。
absolutePan 将视口平移,使指定的点移动到画布的左上角。
relativePan 相对地平移视口。
setViewportTransform 设置画布的视口变换矩阵,用于实现复杂的平移、缩放、旋转等效果。
calcViewportBoundaries 计算当前视口变换下,画布四个角的坐标。
getCenterPoint 获取画布的中心点坐标。
getVpCenter 获取当前视口的中心点坐标。
centerObject 将一个对象在画布上水平和垂直居中。
centerObjectH 将一个对象在画布上水平居中。
centerObjectV 将一个对象在画布上垂直居中。
viewportCenterObject 将一个对象在当前视口中水平和垂直居中。
viewportCenterObjectH 将一个对象在当前视口中水平居中。
viewportCenterObjectV 将一个对象在当前视口中垂直居中。
calcOffset 计算画布元素相对于文档左上角的偏移量。
getScenePoint 将鼠标事件坐标转换为场景坐标(不受视口变换影响)。
getViewportPoint 将鼠标事件坐标转换为视口坐标(受视口变换影响)。
isTargetTransparent 检查指定对象在某个坐标点是否是透明的。
设置状态

用于获取和设置画布的各种属性,以及管理其生命周期。

方法名 用途说明
set 设置画布的一个或多个属性值。
get 获取画布的指定属性值。
toggle 切换一个布尔类型的属性值(true/false 互换)。
setDimensions 设置画布的宽度和高度。
getWidth 获取画布的宽度。
getHeight 获取画布的高度。
getElement 获取画布对应的 HTMLCanvasElement 元素。
getContext 获取画布的 2D 绘图上下文(CanvasRenderingContext2D)。
dispose 销毁画布实例,清理所有资源(如事件监听器),返回一个 Promise。
destroy 销毁画布实例。
cancelRequestedRender 取消一个已请求但尚未执行的渲染操作。
toString 返回画布实例的字符串表示。
getDefaults (静态方法) 获取画布的默认属性值。

2.基础类BaseFabricObject

共有继承基础属性

属性
属性名 用途说明
absolutePositioned 仅当对象用作 clipPath 时有意义。如果为 true,裁剪路径的位置将相对于画布,而不受对象自身变换的影响。
aCoords 描述对象在场景坐标系中的角点位置。这些坐标由对象的 left, top, width, height, scale, skew, angle 等属性计算得出。
angle 对象的旋转角度(以度为单位)。
backgroundColor 对象的背景颜色,接受任何有效的 CSS 颜色值。
centeredRotation 如果为 true,对象将围绕其中心点旋转。如果为 false,则围绕由 originXoriginY 定义的原点旋转。
centeredScaling 如果为 true,当通过控件缩放对象时,将使用中心点作为变换原点。
clipPath 定义一个裁剪路径对象,当前对象将只在该路径内部显示。
dirty 当设置为 true 时,对象的缓存将在下次渲染时被重新生成。
excludeFromExport 如果为 true,该对象在导出为 JSON 或对象格式时将被排除。
fill 定义对象的填充样式,可以是颜色字符串、渐变或图案。
fillRule 定义填充规则,可接受的值是 nonzeroevenodd
flipX 如果为 true,对象将水平翻转渲染。
flipY 如果为 true,对象将垂直翻转渲染。
globalCompositeOperation 定义对象在画布上绘制时使用的复合操作规则。
height 对象的高度。
includeDefaultValues 如果为 false,对象的默认属性值将不包含在其序列化输出中。
inverted 仅当对象用作 clipPath 时有意义。如果为 true,裁剪效果将反转,即对象在裁剪路径外部显示。
left 对象的左侧位置。默认情况下,该位置是相对于 originX 定义的。
matrixCache 用于存储对象完整变换矩阵的缓存。
minScaleLimit 对象允许的最小缩放值。
objectCaching 如果为 true,对象将被缓存到一个额外的 canvas 上以提升渲染性能。
opacity 对象的透明度,取值范围为 0 到 1。
originX 定义对象水平定位的原点,可设置为 left, center, right
originY 定义对象垂直定位的原点,可设置为 top, center, bottom
ownMatrixCache 用于存储对象自身变换矩阵(不包含父级变换)的缓存。
padding 对象与其控制边框之间的内边距(以像素为单位)。
paintFirst 决定是先绘制填充还是先绘制描边,可设置为 fillstroke
parent 指向对象父级(Group)的引用。
scaleX 对象的水平缩放因子。
scaleY 对象的垂直缩放因子。
shadow 定义对象的阴影效果。
skewX 对象在 X 轴上的倾斜角度(以度为单位)。
skewY 对象在 Y 轴上的倾斜角度(以度为单位)。
stroke 定义对象描边的样式,可以是颜色字符串、渐变或图案。
strokeDashArray 一个数组,用于指定对象描边的虚线模式。
strokeDashOffset 对象描边的虚线偏移量。
strokeLineCap 定义对象描边端点的样式,可设置为 butt, round, square
strokeLineJoin 定义对象描边拐角的样式,可设置为 bevel, round, miter
strokeMiterLimit 定义描边拐角为 miter 时的最大斜接长度。
strokeUniform 如果为 true,描边宽度将保持恒定,不随对象的缩放而改变。
strokeWidth 用于渲染对象的描边宽度。
top 对象的顶部位置。默认情况下,该位置是相对于 originY 定义的。
visible 如果为 false,对象将不会被渲染到画布上。
width 对象的宽度。
cacheProperties 静态属性。一个属性名列表,当这些属性被修改时,会触发对象缓存的刷新。
colorProperties 静态属性。一个属性名列表,用于在动画中识别颜色属性。
customProperties 静态属性。一个自定义属性名列表,这些属性在调用 toObject() 时会被序列化。
ownDefaults 静态属性。定义了该类实例的默认属性值。
stateProperties 静态属性。一个属性名列表,用于检查对象状态是否发生变化,主要用于判断组(Group)是否需要重新生成缓存。
type 静态属性。类的类型字符串,用于序列化和反序列化,以识别对象的具体类。
方法
渲染与绘制相关
方法名 用途说明
_drawClipPath 绘制对象的裁剪路径(clipPath)。
_limitCacheSize 限制缓存画布的尺寸,以平衡性能和画质。
_removeCacheCanvas 移除对象的缓存画布。
_setClippingProperties 设置裁剪相关的属性。
_setFillStyles 设置填充样式(如颜色、渐变)。
_setStrokeStyles 设置描边样式(如颜色、宽度、线帽)。
_setupCompositeOperation 设置全局复合操作(globalCompositeOperation),控制对象如何与背景混合。
drawCacheOnCanvas 将缓存的内容绘制到画布上。
drawClipPathOnCache 在缓存上执行裁剪路径的绘制。
drawObject 执行对象的核心绘制操作。
drawSelectionBackground 绘制对象被选中时的背景。
isCacheDirty 检查缓存是否需要更新。
needsItsOwnCache 判断对象是否需要独立的缓存。
render 在指定上下文上渲染对象。
renderCache 渲染对象的缓存。
shouldCache 决定对象是否应该被缓存。
toCanvasElement 将对象转换为一个 HTMLCanvasElement。
toDataURL 将对象转换为 data URL 字符串。
toBlob 将对象转换为一个 Blob 对象。
transform 在渲染时变换上下文(如平移、旋转)。
willDrawShadow 检查对象是否会绘制阴影。
几何与坐标计算

用于获取和计算对象的位置、尺寸、边界框以及与其他对象的空间关系。

方法名 用途说明
calcACoords 计算对象边界框四个角的绝对坐标。
calcOwnMatrix 计算对象自身的变换矩阵(不包含父级变换)。
calcTransformMatrix 计算对象的完整变换矩阵(包含所有父级变换)。
containsPoint 检查一个点是否在对象内部。
getBoundingRect 获取对象边界框的坐标和尺寸(left, top, width, height)。
getCenterPoint 获取对象相对于画布的中心坐标。
getCoords 获取对象四个角的坐标点数组。
getObjectScaling 获取对象的缩放比例(包含父级缩放)。
getPointByOrigin 根据指定的原点(如 'center', 'left')获取一个点的位置。
getPositionByOrigin 根据指定的原点获取对象的位置。
getRelativeCenterPoint 获取对象相对于其父级的中心坐标。
getRelativeX / Y / XY 获取对象相对于父级坐标系的 X/Y/XY 位置。
getScaledHeight / Width 获取考虑了变换后的对象高度/宽度。
getTotalAngle 获取对象的总旋转角度(包含父级旋转)。
getTotalObjectScaling 获取对象的总缩放比例(包含父级、画布缩放和视网膜屏系数)。
getViewportTransform 从对象的画布中获取视口变换矩阵。
getX / Y / XY 获取对象在画布坐标系中的 X/Y/XY 位置。
intersectsWithObject 检查对象是否与另一个对象相交。
intersectsWithRect 检查对象是否与一个矩形区域相交。
isContainedWithinObject 检查对象是否完全包含在另一个对象内部。
isContainedWithinRect 检查对象是否完全包含在一个矩形区域内。
isOnScreen 检查对象是否在当前视口内(完全或部分)。
isOverlapping 检查对象是否与另一个对象重叠。
isPartiallyOnScreen 检查对象是否部分在当前视口内。
positionByLeftTop 将对象的左上角定位到指定点。
scale 等比缩放对象。
scaleToHeight / Width 将对象缩放到指定的高度/宽度。
setCoords 更新对象的角点和控制点坐标。
setPositionByOrigin 根据指定的原点设置对象的位置。
setRelativeX / Y / XY 在父级坐标系中设置对象的 X/Y/XY 位置。
setX / Y / XY 在画布坐标系中设置对象的 X/Y/XY 位置。
transformMatrixKey 生成一个代表变换矩阵的键值。
translateToCenterPoint 将坐标从原点转换为中心点坐标。
translateToGivenOrigin 将坐标从一种原点转换到另一种原点。
translateToOriginPoint 将坐标从中心点转换为原点坐标。
属性与状态管理

获取、设置、切换对象的属性,以及管理对象的状态。

方法名 用途说明
dispose 取消对象的动画并清理资源。
get 获取指定属性的值。
getObjectOpacity 获取对象的总透明度(包含父级透明度)。
hasFill 判断对象是否会绘制填充。
hasStroke 判断对象是否会绘制描边。
isNotVisible 判断对象是否不可见。
isType 检查对象是否是指定的类型。
rotate 设置对象的旋转角度。
set 设置一个或多个属性的值。
setOnGroup 当对象在组内且组的属性改变时被调用。
toggle 切换一个布尔属性的值(true/false 互换)。
序列化与克隆

用于创建对象的副本,或将对象转换为可存储或传输的格式。

方法名 用途说明
clone 克隆一个对象实例,返回一个 Promise。
cloneAsImage 将对象克隆为一个 Image 实例。
toDatalessObject 返回一个不包含数据的对象表示(用于优化)。
toJSON 返回对象的 JSON 表示。
toObject 返回对象的普通 Object 表示。
层级与关系

判断对象之间的层级、父子等关系。

方法名 用途说明
findCommonAncestors 查找两个对象的共同祖先。
getAncestors 获取对象的所有祖先(从下到上)。
hasCommonAncestors 检查两个对象是否有共同祖先。
isDescendantOf 检查对象是否是另一个对象的后代。
isInFrontOf 检查对象是否在另一个对象的前面。
事件与动画

处理对象的事件监听和属性动画。

方法名 用途说明
animate 对对象的一个或多个属性执行动画。
fire 触发一个自定义事件。
off 移除事件监听器。
on 添加事件监听器。
once 添加一个只执行一次的事件监听器。

3.InteractiveFabricObject

继承自 BaseFabricObject,并在此基础上增加了处理用户交互、控制点、拖拽、动画和事件监听的能力。多数与BaseFabricObject相同,此处追加

方法
交互事件
方法名 用途说明
canDrop 重写此方法以自定义拖放行为,判断对象是否可以被放置。
forEachControl 为对象的每个控制点调用一个函数。
get 获取对象指定属性的值。
getActiveControl 获取当前激活的控制点信息。
isControlVisible 返回指定控制点是否可见。
off 移除事件监听器。
on 添加事件监听器。
once 添加一个只执行一次的事件监听器。
onDeselect 当对象被取消选中时调用的回调函数。
onDragStart 当拖拽会话开始时调用的回调函数。
onSelect 当对象被选中时调用的回调函数。
set 设置对象的一个或多个属性值。
setControlsVisibility 批量设置对象控制点的可见性。
setControlVisible 设置指定控制点的可见性。
shouldStartDragging 重写此方法以自定义拖拽行为,判断是否应开始拖拽。
toggle 切换指定布尔属性的值(true/false 互换)。
fire 触发一个自定义事件。

4.FabricObject

也是基础类,多数与baseFabricObject相同

方法

5.激活类ActiveSelectionOptions

可以通过canvas方法获得当前选择的对象,可以是一个图形或组

方法
对象层级与堆叠管理

控制 ActiveSelection 组内对象的堆叠顺序,以及整个组在画布上的层级。

方法名 用途说明
bringObjectForward 将组内的某个对象向上移动一层。
bringObjectToFront 将组内的某个对象移动到最顶层。
sendObjectBackwards 将组内的某个对象向下移动一层。
sendObjectToBack 将组内的某个对象移动到最底层。
moveObjectTo 将组内的某个对象移动到指定的层级索引位置。
findNewLowerIndex (内部方法) 计算对象向下移动时的新索引。
findNewUpperIndex (内部方法) 计算对象向上移动时的新索引。
集合内容管理

管理 ActiveSelection 组中包含哪些对象,是增是删还是查。

方法名 用途说明
add 向组中添加一个或多个对象。
remove 从组中移除一个或多个对象。
insertAt 在指定的索引位置插入一个或多个对象。
removeAll 移除组中的所有对象。
getObjects 获取组内所有对象的数组。
item 根据索引获取组内的单个对象。
size 获取组内对象的数量。
isEmpty 检查组是否为空。
contains 检查组是否包含某个特定对象。
forEachObject 遍历组内的每个对象并执行回调函数。
collectObjects 根据一个边界框,收集所有与之相交或包含在内的对象。
multiSelectAdd 以多选模式添加对象,会考虑堆叠顺序。
渲染与绘制

控制 ActiveSelection 组及其内部对象如何在画布上被绘制出来。

方法名 用途说明
render 在指定的上下文上渲染整个组。
drawObject 执行组的核心绘制操作。
drawBorders 绘制组的边界框。
drawControls 绘制组的控制点(如缩放、旋转手柄)。
drawSelectionBackground 在组的选中边框后绘制一个背景色。
renderCache 渲染组的缓存,以提升性能。
drawCacheOnCanvas 将缓存的内容绘制到画布上。
isCacheDirty 检查缓存是否需要更新。
shouldCache 决定组是否需要被缓存(ActiveSelection 默认不缓存)。
setCoords 更新组及其控制点的坐标。
calcACoords 计算组边界框四个角的绝对坐标。
calcOCoords 计算组控制点的坐标。
几何与坐标计算

计算 ActiveSelection 组的位置、尺寸、边界以及与其他对象的空间关系。

方法名 用途说明
getBoundingRect 获取组的边界矩形(left, top, width, height)。
getCoords 获取组四个角的坐标点数组。
getCenterPoint 获取组相对于画布的中心坐标。
getRelativeCenterPoint 获取组相对于其父级的中心坐标。
containsPoint 检查一个点是否在组的内部。
intersectsWithObject 检查组是否与另一个对象相交。
intersectsWithRect 检查组是否与一个矩形区域相交。
isContainedWithinObject 检查组是否完全包含在另一个对象内部。
isContainedWithinRect 检查组是否完全包含在一个矩形区域内。
isOnScreen 检查组是否在当前视口内。
isPartiallyOnScreen 检查组是否部分在当前视口内。
getScaledWidth / Height 获取考虑了变换后的组的宽度/高度。
calcTransformMatrix 计算组的完整变换矩阵。
getTotalAngle 获取组的总旋转角度。
序列化、克隆与导出
方法名 用途说明
clone 克隆一个 ActiveSelection 实例。
toObject 返回组的普通 Object 表示,用于序列化。
toJSON 返回组的 JSON 表示。
toDatalessObject 返回一个不包含数据的对象表示(用于优化)。
toSVG 返回组的 SVG 字符串表示。
toCanvasElement 将组转换为一个 HTMLCanvasElement。
cloneAsImage 将组克隆为一个 fabric.Image 实例。
toDataURL 将组转换为 data URL 字符串。
toBlob 将组转换为一个 Blob 对象。
_fromObject (静态方法) 从对象数据中异步创建一个实例。
事件、动画与交互
方法名 用途说明
on 添加事件监听器。
off 移除事件监听器。
once 添加一个只执行一次的事件监听器。
fire 触发一个自定义事件。
animate 对组的一个或多个属性执行动画。
onSelect 当对象被选中时调用的回调函数。
onDeselect 当对象被取消选中时调用的回调函数。
shouldStartDragging 判断是否应该开始拖拽行为。
onDragStart 拖拽开始时的回调。
canDrop 判断当前拖拽的对象是否可以被放置在该组上。
renderDragSourceEffect 渲染拖拽源的视觉效果。
renderDropTargetEffect 渲染放置目标的视觉效果。
属性与状态管理
方法名 用途说明
get 获取指定属性的值。
set 设置一个或多个属性的值。
toggle 切换一个布尔属性的值。
rotate 设置组的旋转角度。
scale 等比缩放组。
scaleToWidth / Height 将组缩放到指定的宽度/高度。
dispose 取消动画并清理资源。
isType 检查对象是否是 ActiveSelection 类型。
isDescendantOf 检查组是否是另一个对象的后代。
hasFill / hasStroke 判断组是否有填充或描边。
isNotVisible 判断组是否不可见。
setControlsVisibility 批量设置控制点的可见性。
setControlVisible 设置单个控制点的可见性。
isControlVisible 检查指定控制点是否可见。
forEachControl 遍历所有控制点。
getActiveControl 获取当前激活的控制点。
clearContextTop 清除画布顶层上下文中的特定区域。
层级与关系

判断 ActiveSelection 组与其他对象之间的层级和父子关系。

方法名 用途说明
getAncestors 获取对象的所有祖先。
findCommonAncestors 查找两个对象的共同祖先。
hasCommonAncestors 检查两个对象是否有共同祖先。
isInFrontOf 检查组是否在另一个对象的前面。

6.控件类Control

定义和管理对象上交互控件(如缩放、旋转的控制点)的核心类,对象上那些可以被鼠标或触摸操作的小方块或图标。它定义了控件的位置、大小、外观,以及当用户与它交互时(如按下、拖动、释放)应该执行什么动作。

属性
属性名 用途说明
actionHandler 控件的动作处理器,用于处理控件被拖动时的逻辑(如缩放、旋转)。
actionName 控件将要执行的动作名称(如 'scale')。这是一个可选属性,Fabric.js 用它来识别用户操作以进行优化。默认为 'scale'。
angle 控件的绘制角度。目前未使用,但已为内部逻辑预留。
cursorStyle 当鼠标悬停在控件上时显示的 CSS 光标样式。如果提供了 cursorStyleHandler 方法,此属性将被忽略。默认为 'crosshair'。
mouseDownHandler 控件的鼠标按下事件处理器,用于处理在控件上按下鼠标时的逻辑。
mouseUpHandler 控件的鼠标释放事件处理器,用于处理在控件上释放鼠标时的逻辑。
offsetX 控件相对于其定义位置的水平偏移量(像素)。正值向右,负值向左。可用于创建不随对象缩放而改变相对位置的控件。默认为 0。
offsetY 控件相对于其定义位置的垂直偏移量(像素)。正值向下,负值向上。默认为 0。
sizeX 控件的宽度。如果为 null,则默认使用对象的 cornerSize。设置时需同时设置 sizeY
sizeY 控件的高度。如果为 null,则默认使用对象的 cornerSize。设置时需同时设置 sizeX
touchSizeX 控件触摸区域的宽度。如果为 null,则默认使用对象的 touchCornerSize。设置时需同时设置 touchSizeY
touchSizeY 控件触摸区域的高度。如果为 null,则默认使用对象的 touchCornerSize。设置时需同时设置 touchSizeX
transformAnchorPoint 一个对象,定义了变换操作的锚点,包含 xy 两个属性。
visible 一个布尔值,用于跟踪控件的可见性。默认为 true
withConnection 如果控件有 offsetXoffsetY,设置为 true 可以绘制一条线将控件连接到对象的边界框。默认为 false
x 控件的相对水平位置。0 是对象中心,-0.5 是左边缘,0.5 是右边缘。默认为 0。
y 控件的相对垂直位置。0 是对象中心,-0.5 是上边缘,0.5 是下边缘。默认为 0。
方法
渲染与绘制方法
方法名 用途说明
commonRenderProps 这是一个辅助方法,用于准备画布以渲染控件。它会根据控件的通用属性(如填充色、描边)设置正确的上下文样式,但不执行平移或旋转。
render 控件的主要渲染函数。当此函数运行时,画布上下文是未缩放和未旋转的(仅考虑视网膜屏幕缩放)。所有绘制操作都需要先平移到指定的 left, top 位置。
几何与坐标方法
方法名 用途说明
calcCornerCoords 根据对象的当前状态(如旋转角度、中心点)计算并返回此控件的四个角点坐标。
positionHandler 计算并返回控件在画布上的最终位置点(Point)。
交互与事件方法
方法名 用途说明
cursorStyleHandler 根据控件的 cursorStyle 属性,返回鼠标悬停在控件上时应显示的 CSS 光标样式。
getActionHandler 返回控件的 actionHandler,该处理器负责处理控件被拖动时的逻辑(如缩放、旋转)。
getActionName 返回控件将要执行的动作名称(如 'scale')。默认实现直接返回 actionName 属性。
getMouseDownHandler 返回控件的 mouseDownHandler,用于处理在控件上按下鼠标时的逻辑。
getMouseUpHandler 返回控件的 mouseUpHandler,用于处理在控件上释放鼠标时的逻辑。
getTransformAnchorPoint 返回一个对象,定义了变换操作的锚点(origin),包含 xy 两个属性。
getVisibility 返回一个布尔值,表示控件当前是否可见。
setVisibility 设置控件的可见性。
shouldActivate 判断控件是否应该被激活。

7.图像FabricImage

属性
属性名 用途说明
cacheKey 用于检索代表此图像的纹理的唯一键。
cropX 从原始图像尺寸开始,在 X 轴上裁剪的像素值。
cropY 从原始图像尺寸开始,在 Y 轴上裁剪的像素值。
filters 应用于此图像的滤镜数组。
imageSmoothing 指示绘制此图像时是否使用图像平滑(抗锯齿)。
minimumScaleTrigger 触发自动调整图像大小的最小缩放因子。0 将禁用自动调整大小。
preserveAspectRatio 定义图像在调整大小时如何保持其宽高比。
resizeFilter 用于在图像缩放时自动调整大小的滤镜。
srcFromAttribute 当调用 getSrc 时,是否从元素的 src 属性中获取值,以支持相对路径。
方法
方法名 用途说明
_toSVG 返回此实例的 SVG 字符串表示形式。
applyFilters filters 数组中定义的滤镜应用到图像上。
applyResizeFilters 应用用于调整图像大小的滤镜。
dispose 清理图像资源,如删除纹理和对元素的引用。
drawCacheOnCanvas 将对象的缓存副本绘制到目标上下文上,并设置图像平滑属性。
getCrossOrigin 获取对应图像元素的 crossOrigin 值。
getElement 返回此实例所基于的图像元素。
getOriginalSize 返回图像的原始尺寸(宽度和高度)。
getSrc 返回图像的来源(src)URL。
getSvgSrc 已弃用,getSrc 的别名。
hasCrop 检查图像是否应用了裁剪(通过检查 cropX, cropY, width, height 的值)。
setElement 为此实例设置一个新的图像元素。如果定义了滤镜,它们会被应用到新图像上。
setSrc 从指定的 URL 加载并设置图像的来源。
shouldCache 决定 FabricImage 是否应该被缓存。图像通常不受益于缓存,但在某些情况下需要。
toBlob 将对象转换为一个 Blob 对象。
toCanvasElement 将对象转换为一个 HTMLCanvasElement 元素。
toDataURL 将对象转换为一个 data URL 字符串。
toString 返回此实例的字符串表示形式。