Fabric.js 橡皮擦的用法(包含恢复功能)
2022/6/24 4:19:25
本文主要是介绍Fabric.js 橡皮擦的用法(包含恢复功能),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
本文简介
点赞 + 关注 + 收藏 = 学会了
本文介绍 Fabric.js
的橡皮擦功能。
Fabric.js
的基础包并没有包含橡皮擦模块,如果你的项目需要使用橡皮擦,要使用定制版的 Fabric.js
。
本文需要有 Fabric.js
基础知识。
本文使用的是 Fabric 5.2
版本。
敲敲代码
本文使用原生三件套的方式进行开发。同时也会提供包含橡皮擦的 npm
下载方式。
定制 Fabric.js
基础版的 Fabric.js
不包含橡皮擦功能,如果你的项目需要使用橡皮擦功能,需要到 FabricJS builder 里进行定制。
CDN
选中 Erasing
,然后滑动到页面底部,根据你项目所需下载开发版或者压缩版
以上是 CDN 的做法,在 <script>
标签里,使用 src
引用即可。
npm
npm
上也有人打包了一份带橡皮擦功能的 Fabric.js
包。
fabric-with-erasing
可以使用命令下载到你项目中
npm i fabric-with-erasing
需要注意的是,fabric-with-erasing
是在基础版的 fabric
中添加了橡皮擦功能,使用 fabric-with-erasing
时无需再下载 Fabric
。
在写本文时,fabric-with-erasing
中所使用的 Fabric
版本是 5.2
。
console.log(fabric.version)
编码
本例要实现的功能:
- 可更改画布模式(框选、擦拭)
- 宝蓝色的正方形不可擦拭
- 被擦拭的地方可以恢复
<!-- 修改画布模式的按钮 --> <div style="margin-bottom: 10px;"> <button id="select" type="button" onclick="changeAction('select')">select</button> <button id="erase" type="button" onclick="changeAction('erase')">erase</button> <button id="erase" type="button" onclick="changeAction('undoErasing')">undo erasing</button> </div> <!-- 画布 --> <canvas id="c" width="400" height="400" style="border: 1px solid #ccc;"></canvas> <!-- 引入定制好的 fabric --> <script src="./fabric.js"></script> <script> // 初始化画布 const canvas = this.__canvas = new fabric.Canvas('c') // 在画布中添加图形(本例添加2个正方形) canvas.add( // 第一个正方形(宝蓝色) new fabric.Rect({ top: 50, left: 50, width: 50, height: 50, fill: "#4b5cc4", opacity: 0.8, erasable: false // 不允许擦拭 }), // 第二个正方形(桃红色) new fabric.Rect({ top: 50, left: 150, width: 50, height: 50, fill: "#f47983", opacity: 0.8 }) ) // 修改画板行为模式 function changeAction(mode) { switch (mode) { case "select": canvas.isDrawingMode = false // 不允许绘画(返回普通框选模式) break case "erase": canvas.isDrawingMode = true // 进入绘画模式 canvas.freeDrawingBrush = new fabric.EraserBrush(canvas) // 使用橡皮擦画笔 canvas.freeDrawingBrush.width = 10 // 设置画笔粗细为 10 break case 'undoErasing': canvas.isDrawingMode = true canvas.freeDrawingBrush = new fabric.EraserBrush(canvas) canvas.freeDrawingBrush.width = 10 canvas.freeDrawingBrush.inverted = true // 恢复被擦拭的地方 default: break } } </script>
- 要使用橡皮擦,首先需要将
isDrawingMode
设为true
。 new fabric.EraserBrush
里需要传入画布本身,在初始化画布时的那个对象const canvas = this.__canvas = new fabric.Canvas('c')
。- 将
canvas.freeDrawingBrush.inverted
设为true
就能恢复被擦拭的地方。
代码仓库
- ⭐Fabric.js 橡皮擦的用法
这篇关于Fabric.js 橡皮擦的用法(包含恢复功能)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-04React 19 来了!新的编译器简直太棒了!
- 2025-01-032025年Node.js与PHP大比拼:挑选最适合的后端技术进行现代web开发
- 2025-01-03?? 用 Gemini API、Next.js 和 TailwindCSS 快速搭建 AI 推文生成项目 ??
- 2024-12-31Vue CLI多环境配置学习入门
- 2024-12-31Vue CLI学习入门:一步一步搭建你的第一个Vue项目
- 2024-12-31Vue3公共组件学习入门:从零开始搭建实用组件库
- 2024-12-31Vue3公共组件学习入门教程
- 2024-12-31Vue3学习入门:新手必读教程
- 2024-12-31Vue3学习入门:初学者必备指南
- 2024-12-30Vue CLI多环境配置教程:轻松入门指南