之前写过一篇笔记,《使用fabric.js 快速开发一个图片编辑器》,简单介绍了如何用vue和fabric.js快速开发一款编辑器。...图片 正文 1、架构演进 最早的设计是将 fabric.js创建的canvas对象通过provide传递给子组件使用,功能代码封装到vue组件中。...components/lock.vue#L41 图片 7、画布大小调整 最早的版本的画布大小调整就是对fabric.js的canvas大小做调整,这样做有2个问题,一是没办法将画布大小保存到json文件中...最后的实现思路是,使用矩形元素模拟画布区域,fabric.js的canvas大小根据视口DOM的宽高自适应,通过调整矩形元素属性来设置画布到大小和颜色,其他元素通过属相面板修改属性。...9、拖拽到画布 将基础元素添加到画布有两种方式,一种是点击元素,会添加到画布中央,另一种是直接拖拽元素到画布,可以将元素添加到指定位置,使用拖拽事件实现。
使用 Fabric.js 创建画布。 等字体加载完成后再设置文本字体。 将文本添加到画布中。...动态修改字体 如果需要在项目运行时动态修改字体,需要做以下几步: 提前加载好要用的字体库。 创建画布。 等字体加载完成后再设置文本字体。 将文本添加到画布中。 修改字体前,先获取要修改的文本元素。...使用 set 方法设置文本的 fontFamily 属性。 刷新画布。 本例用到斗鱼和阿里的字体,我查过了,说是免费使用。...如何使用自定义字体库的内容说完了,但日常工作中我还遇到一个问题:某些特定地方会使用一些特殊字体,比如数字、项目名等地方。...经过我长时间的审问,一位不愿透露姓名的网友终于透露出他用到精简字体库的工具 Fontmin 有客户端,也可以直接使用终端操作。 客户端也提供了mac和windows两个版本,操作起来非常简单。
本文主要聊聊: 在 fabric.js 中如何清空画布; 和原生 canvas 对比,fabric.js 到底有多方便; 销毁 fabrci.js 创建的画布; 把 canvas 元素也销毁掉; 原生...使用 clear 方法只会清空画布上的内容,并不会销毁画布。 可以看到清空画布后,fabric.js 的默认操作还是在的(可以框选),这证明画布只是被清空了,并没有被销毁。...销毁 fabric 实例:dispose 除了使用 clear 方法清空画布外,fabric.js 还提供了另一个更强的方法:dispose dispose 方法可以把 fabric.js 创建出来的实例销毁掉...将 Canvas 元素也干掉:借助 getElement 如果想在销毁画布后,将 canvas 元素也移除掉,可以借助 getElement 获取当前画布元素,然后使用 dispose 销毁 fabric...height: 100, // 底边到定点的距离 fill: 'blue', }) // 将三角形添加到画布中 canvas.add(triangle) // 返回与此实例对应的画布元素
环境和版本 Chrome浏览器版本:96.0.4664.45 Fabric.js版本:4.6.0 我是在原生环境下开发的,同时也提供了一份 Vue3 环境下开发的代码(文末有链接)。...动手操作 接下来有3个案例,使用了2张图片 Agumon.png 和 Bhikkhu.png,图片是在 iconfont 网站上找到的。 如果需要使用本案例的图片,可以在文末提供的仓库中获取。...情景1:更换图片元素的src 如果在画布上添加的是 Image 对象,那么可以使用 Image.setSrc 设置新的图片,然后再使用 Canvas.renderAll 刷新一下画布即可。...如果画布上有多个图形和图片,你可能需要在创建图片的时候加一些自定义属性进去判断。 使用 fabric.getObjects().find() 去搜索就行了。 find() 就是数组的原始方法。...我的做法是: 查找图片对象,并保存到一个变量上; 删除分组内的图片对象(使用 Group.removeWithUpdate ); 更新图片对象的 src 指向(使用 Image.setSrc ); 将图片放到分组里
英语课代表的提醒~ 效果如下图所示 版本说明 Fabric.js版本:4.6.0 相关API Fabric.js 提供了几个 API 完成 摆正操作: canvas.straightenObject...和 object.fxStraighten 摆正元素后,画面是不会自动更新的(但实际是已经摆正了),需要配合 canvas.renderAll() 等刷新画布的 API 一起使用。...fill: 'blue', angle: 30 // 旋转了30度 }) // 将矩形添加到画布中 canvas.add(triangle) } // 摆正 function...fill: 'blue', angle: 30 // 旋转了30度 }) // 将矩形添加到画布中 canvas.add(triangle) } // 摆正 function...orange', angle: -40 }) // 将矩形添加到画布中 canvas.add(triangle, rect) renderAll() } // 不断刷新画布
Fabric.js 是一个强大而简单的 Javascript HTML5 画布库 Fabric 在画布元素之上提供交互式对象模型 Fabric 还具有 SVG-to-canvas(和 canvas-to-SVG...)解析器 为了方便,下面我将通过 vue项目 为大家讲解如何使用 Fabric 2....,当然 Fabric 还支持自定义滤镜,在本篇文章点赞过 500 后我将更新 fabric 高级篇,感谢大家的支持~ 3.6 颜色 无论你是使用十六进制,RGB 或 RGBA 颜色,Fabric 都能处理的很好...行高 Line Height 在使用多行文本时有用。 字符间距 Char spacing 使文本更紧凑或更间隔。 子范围 Subranges 将颜色和属性应用到文本对象的子对象中。...允许将侦听器直接附加到 canvas 画布中的对象上。
本文简介 当你要复制一个 fabric 的元素时,你考虑到的是什么?是深拷贝当前选中对象再添加到画布中?...复制前,肯定需要有被复制的目标,我们可以使用 canvas.getActiveObject() 方法获取当前被选中的元素。 复制时,可以使用 clone() 方法,将当前选中的元素对象克隆出来。...粘贴时,使用 canvas.add() 方法将克隆出来的元素添加到画布中。 当然,实际开发中还有很多需要注意的小点,比如选中一个组的时候要怎么复制粘贴?框选一堆元素时要怎么复制粘贴?..._clipboard) return // 执行粘贴操作,将克隆出来的对象再克隆一遍,然后添加到画布中。...代码和上面的一样,只需把单个元素换成组即可,我引用 fabric.js 官网的 demo // 省略部分代码 let circle1 = new fabric.Circle({ radius:
如果你的项目有画布拖拽、缩放等功能,而且你不希望背景图跟随拖拽或缩放,那一定要往下读。 本文主要讲解如何锁定背景图,锁定背景图其实只需设置1个属性即可。...本文会添加滚轮缩放画布、拖拽画布等功能来测试 “锁定背景图” 的效果。 应该可以清晰看出,不管如何拖拽和缩放画布,背景图都纹丝不动。...-- 引入 Fabric.js --> ...: 'orange', // 填充a 橙色 width: 60, // 宽度 60px height: 60 // 高度 60px }) // 将矩形添加到画布中 canvas.add(circle...添加滚轮缩放 使用滚轮缩放画布,需要监听 mouse:wheel 。
本文简介 点赞 + 关注 + 收藏 = 学会了 使用 fabric.js 创建的图形,默认的缩放原点是元素操作点的对角点。 如下图所示: 如果按住 alt 键 操作会把原点移动到元素中心。..., height: 60, left: 100, top: 100, fill: 'pink' }) // 将矩形添加到画布里 canvas.add(rect...: 'green' }) // 将圆形添加到画布里 canvas.add(circle) 全局设置 全局设置的话,画布上所有元素都会生效。...只需在创建画布时将 centeredScaling 设为 true 即可。...fill: 'pink', centeredScaling: true // 单个元素生效 }) // 将矩形添加到画布里 canvas.add(rect) 上面的代码只设置了矩形的 centeredScaling
本文主要想提一下 fabric.js 存在这么一个方便的方法。 检测元素是否相交有什么用呢? 这个功能在日常开发中其实很实用,在它的帮助下我们可以实现“防止对象碰撞”、“对象自动对齐贴合”等功能。...动手试试看 为了演示 intersectsWithObject() ,我打算做如下操作: 创建画布 创建矩形、圆形、三角形元素,并将它们添加到画布里 使用 canvas.on('object:moving...') 监听图形元素移动 元素移动的过程中不断遍历画布当前所有元素,如果正在移动的元素和其他图形相交了,就在控制台输出被相交的元素的类型。.../js/fabric.js"> let canvas = new fabric.Canvas('c') // 矩形 - 亮粉色 let rect = new...: 100, left: 300, top: 200, fill: 'skyblue' }) // 将矩形、圆形、三角形添加到画布中 canvas.add(rect
IText 是 Fabric.js 提供的一个 可编辑文本 的元素。 要设置文字颜色,可以设置 fill 。...-- 引入 Fabric.js --> ...('hello world') // 将文本添加到画布里 canvas.add(iText) 复制代码 首先把 Fabric.js 引入,然后初始化画布。...如果对这个概念不太熟的话,可以看看 Fabric.js 从入门到膨胀。 最后通过 new fabric.IText 创建一段文字添加到画布中。...在 Fabric.js 里是使用这个属性设置颜色的,和 css 设置文字颜色使用 color 不一样~ 单行:设置指定文字颜色 const iText = new fabric.IText('hello
由于我使用 Fabric.js 的时间不长,这份笔记在各个知识点的内容肯定不够全面的,也不一定完全正确。...,比如: 自定义操作角样式和状态 自定义控件 复制粘贴图形 使用事件方式操作图形和分组 …… 除了上述内容外,我还会根据日后的工作中整理出更多常用和好玩的操作,本文即学习仓库会不定期更新!!!...开发环境搭建 环境和版本说明 本文使用 Fabric.js 的版本是 4.6。 本文的开发环境是使用 Vite 构建的 Vue 3.2 项目。...记录鼠标当前所在的 x 和 y 轴坐标。 鼠标移动 mouse:move 判断是否需要移动(鼠标点击的第三步)。 如需移动,立刻转换画布视图模式 将画布移动到 鼠标x和y轴坐标 。...radius: 50, fill: 'green' }) canvas.add(rect, circle) // 将矩形和圆形添加到画布中 canvas.on('mouse:down
本文简介 学习 Fabric.js,我的建议是看文档不如看 demo。 本文实现的功能:将元素拖进到画布中并生成对应的图形或图片。...解4:移动画布我在 《Fabric.js 拖拽平移画布》 里讲解过。 解5:画布的左上角不一定在body的左上角,也就是鼠标当前位置可能和画布对应的坐标不一样,需要通过加减法计算一下。...: 60, fill: 'pink' }) // 将矩形添加到画布中 canvas.add(rect) // 接下来3个事件监听的主要功能是移动画布,在按住...) }) } initCanvas() 上面的代码使用了 Fabric.js 绑定了页面上的画布,并创造了一个粉红色的矩形。...但画布有可能拖拽和缩放,所以需要通过 Fabric.js 提供的 restorePointerVpt() 方法将坐标转换一下。 于是有了下面的代码。 // 省略部分代码......
再次点的方法是使用 JS 获取输入框元素,再调用 focus 事件选中输入框。 在 Fabric.js 中,IText 组件也提供了类似的方法。...实操 Fabric.js 的 IText 是一个可编辑文本框,可以在项目运行时输入文字,功能其实和 HTML 的 input 差不多,都是可以让用户输入。...默认情况 在 Fabric.js 中,如果在创建 IText 时没有添加文字,在画布上你是很难用肉眼观察出你的输入框在哪的。...(iText) // 将输入框添加到画布中 复制代码 此时画布和输入框是被创建出来了,但凭肉眼是很难找到输入框在哪。...使用 Fabric.js 最主要是多看文档,然后把多个 api 结合起来使用,就能创造出多种效果~ 代码仓库 ⭐IText 激活输入框
---- 本文简介 在阅读本文前,你首先需要知道什么是 Fabric.js,还需要知道 Fabric.js 是如何创建矩形的。...如果你还没满足上面2个条件,推荐阅读 《Fabric.js从入门到____》 我在 Fabric.js 使用 框选操作 创建矩形。...使用 Fabric.js 这类框架,是要注意版本的。...动手实现 我在这里贴出用 原生方式 实现的代码和注释。 如果你想知道在 Vue3 环境下如何实现 Fabric.js 自由绘制矩形,可以在 代码仓库 里查找。 <!...width, height, fill: 'transparent', // 填充色:透明 stroke: '#000' // 边框颜色:黑色 }) // 将矩形添加到画布上
的同学,可以看 《Fabric.js 从入门到___》 本案例是使用原生方式开发,不基于 Vue 、React 等框架,所以不用太担心运行环境等问题。...案例代码放了在文末~ 环境和版本 Chrome浏览器版本:96.0.4664.45 Fabric.js版本:4.6.0 思路 先说说需求: 右键单击元素,弹出菜单; 弹出菜单分4种情况(菜单在鼠标右侧...}) // 将矩形添加到画布中 canvas.add(rect1, rect2, circle, triangle) } 添加点击事件(判断右键) ...// 省略上面的部分代码 function init() { // 省略部分代码...... // 将矩形添加到画布中 canvas.add(rect1, rect2, circle, triangle...代码仓库 原生方式实现Fabric右键菜单 在Vue3中使用Fabric实现右键菜单功能
本文简介 点赞 + 关注 + 收藏 = 学会了 题目: 当两个元素有部分重叠时,选中底层元素后,想通过被盖住的部分移动元素,该如何实现?...其实 Fabric.js 已经提供了相应的 API 去完成上面的需求了。但直到今天, Fabric.js 官方文档还是那么晦涩难懂,于是就有了本文。...设置为 true ,可以让元素被选中时保留在原来的层级,我在 《Fabric.js 元素被选中时保持原有层级》 里也有提到过。.../script/fabric.js"> window.onload = function() { // 使用 元素id 创建画布,此时可以在画布上框选...fill: 'orange', // 填充a 橙色 width: 100, // 宽度 100px height: 100 // 高度 100px }) // 将矩形添加到画布中
在使用 Fabric.js 开发时,可能会需要将元素居中。...本文总结了 Fabric.js 常用的将元素居中的方法,其中包括: 基于视窗的水平居中 基于画布的水平居中 带动画效果的水平居中 基于视窗的垂直居中 基于画布的垂直居中 带动画效果的垂直居中 同时实现水平和垂直居中...阅读本文需要你有一定的 Fabric.js 基础,如果还不太了解 Fabric.js 是什么,可以阅读 《Fabric.js 从入门到膨胀》 创建基础项目 为了方便演示,我在初始化画布的时: 添加一个背景图...,该背景图的尺寸和初始化的画布一样大。...: 60, // 宽度 60px height: 60, // 高度 60px originX: 'center', originY: 'center' }) // 将矩形添加到画布中
不知道你在使用 Fabric.js 时有没有发现,如果一个画布存在多个元素,而且它们之前是层叠的,当你选中底层的元素时,那个元素会跳到最顶层;当你释放该元素后,它又跑回原有层级。...这是 Fabric.js 的默认状态。...《preserveObjectStacking 文档》 接下来我将举例说明该属性的效果和用法。 默认情况 默认情况是被选中的元素会跑到最顶层,当它被释放后又跑回原来的层级。...200px fill: 'orange', // 填充a 橙色 width: 60, // 宽度 60px height: 60 // 高度 60px }) // 将矩形添加到画布中...那么你可以在初始化画布时将 preserveObjectStacking 设为 true // 省略部分代码 const canvas = new fabric.Canvas('canvasBox'
什么是 fabric.js 的子类? fabric.js 类的概念其实和原生 js 的 class 差不多。 在 fabric.js 中,可以创建类,可以继承类。...比如在 官方例子 中,继承 矩形 创建出来的一个带文本的类。它拥有矩形元素的所有属性和方法,同时还添加了 label 属性,可以在矩形中添加文本标签。 fabric.js 如何创建类?...{ // width: 100, // height: 50, left: 100, top: 100, label: 'test', fill: '#faa' }) // 将标签矩形添加到画布中...canvas.add(labeledRect) 因为继承的是矩形,所以还可以使用 fabric.Rect 的属性和方法。...10, stroke: '#7bcfa6', // 描边色 fill: '#ed5736', // 填充色 strokeWidth: 10 // 描边宽度 }) // 将半圆添加到画布里
领取专属 10元无门槛券
手把手带您无忧上云