当前位置:网站首页>Fabric.js 圆形笔刷
Fabric.js 圆形笔刷
2022-07-02 05:08:00 【德育处主任】
本文简介
点赞 + 关注 + 收藏 = 学会了
<br>
本文介绍 Fabric.js
的圆形笔刷功能。
圆形笔刷是作用在 “自由绘制” 的画笔之上的。从名字就可以看出,这个笔刷会用一个个圆形来填充绘制的路径。
看图会更直观
Fabric.js
会使用不同频率、大小、颜色深浅来绘制出上图效果。
<br>
本文使用
Fabric.js 5.2.1
<br>
<br>
常用配置
要做出上图的效果,首先需要将画布设置成 绘画模式 。
<br>
初始化画布
首先需要初始化画布,之后的每个属性和方法讲解,都会基于这段代码。
<canvas id="c" width="600" height="400" style="border: 1px solid #ccc;"></canvas><!-- 引入 Fabric.js --><script src="https://cdn.bootcdn.net/ajax/libs/fabric.js/521/fabric.js"></script><script> // 写法1 const canvas = new fabric.Canvas('c', { isDrawingMode: true // 开启绘画模式 }) // 写法2 // const canvas = new fabric.Canvas('c') // canvas.isDrawingMode = true</script>
要将画布设置成 绘画模式 ,需要将 isDrawingMode
设置为 true
。
上面两种写法选一种即可。
<br>
开启圆形笔刷
将笔刷设置成圆形同样有2种写法。
<br>
写法1
// 省略初始化代码canvas.freeDrawingBrush = new fabric.CircleBrush(canvas)
<br>
写法2
// 省略初始化代码let circleBrush = new fabric.CircleBrush()circleBrush.initialize(canvas)canvas.freeDrawingBrush = circleBrush
<br>
上面两种写法用那种都行,但都会相应影响后续的代码量。
如果你后续要经常修改画笔的属性,我建议用 写法2 。
<br>
设置笔刷宽度
如果上面那步你使用了 写法1 ,要设置笔刷宽度需要这样写
// 省略初始化代码canvas.freeDrawingBrush = new fabric.CircleBrush(canvas) // 创建圆形笔刷canvas.freeDrawingBrush.width = 6 // 笔刷宽度,默认10
<br>
如果你使用了 写法2 ,设置的代码如下所示
// 省略初始化代码// 创建圆形笔刷let circleBrush = new fabric.CircleBrush()circleBrush.initialize(canvas)canvas.freeDrawingBrush = circleBrushcircleBrush.width = 30
<br>
设置笔刷颜色
// 省略初始化代码circleBrush.color = 'pink'
我将笔刷设置成粉红色了,除了关键字颜色,还支持 rgb
等设置方法
circleBrush.color = '#c123a8'circleBrush.color = 'rgb(10, 230, 120)'
<br>
设置阴影
// 省略初始化代码circleBrush.shadow = new fabric.Shadow({ blur: 10, // 羽化程度 offsetX: 20, // x轴偏移量 offsetY: 20, // y轴偏移量 color: '#30e3ca' // 投影颜色})
和 基础笔刷 设置阴影的方法是一样的。
<br>
<br>
常用方法
常用的方法也有几个,但有部分是需要注意的,要组合使用才有效果。
<br>
鼠标按下
// 省略初始化代码circleBrush.onMouseDown = function (pointer, e) { console.log(pointer) console.log(e)}
使用 onMouseDown
可以设置鼠标按下时要触发的事件。该事件有2个参数。
<br>
鼠标松开
// 省略初始化代码circleBrush.onMouseUp = function (pointer) { console.log(pointer)}
和 “鼠标按下” 一样简单。使用 onMouseUp
可以设置鼠标松开的事件。
<br>
鼠标移动时
// 省略初始化代码circleBrush.onMouseMove = function (pointer, e) { console.log(pointer) console.log(e) circleBrush.drawDot(pointer)}
使用 onMouseMove
可以设置鼠标移动时的事件。但在该事件中还需要执行 drawDot
事件,并传入当前鼠标位置才能进行正确绘制。
<br>
在鼠标移动事件中还能添加更多方法,比如在绘制的基础上,在附近再画多一条线
// 省略初始化代码circleBrush.onMouseMove = function (pointer, e) { console.log(pointer) console.log(e) circleBrush.drawDot(pointer) circleBrush.addPoint({x: pointer.x + 50, y: pointer.y + 50}) // 在附近话多一条线}
以上就是 Fabric
圆形笔刷的常用玩法~
<br>
<br>
代码仓库
<br>
<br>
推荐阅读
- 《Fabric.js 笔刷到底怎么用?》
- 《Fabric.js 自由绘制椭圆》
- 《Fabric.js 橡皮擦的用法(包含恢复功能)》
- 《Fabric.js 自定义右键菜单》
- 《Fabric.js 从入门到膨胀》
点赞 + 关注 + 收藏 = 学会了
边栏推荐
- MMAP zero copy knowledge point notes
- Global and Chinese market of hydrocyclone desander 2022-2028: Research Report on technology, participants, trends, market size and share
- Using Kube bench and Kube hunter to evaluate the risk of kubernetes cluster
- 运维工作的“本手、妙手、俗手”
- How to recover deleted data in disk
- Practical problem solving ability of steam Education
- Johnson–Lindenstrauss Lemma(2)
- Feign realizes file uploading and downloading
- 7.1模拟赛总结
- 删除排序数组中的重复项go语言实现
猜你喜欢
Line by line explanation of yolox source code of anchor free series network (7) -- obj in head_ loss、Cls_ Loss and reg_ Calculation and reverse transmission of loss I
Promise all()
Win10 disk management compressed volume cannot be started
Video cover image setting, put cover images into multiple videos in the simplest way
Differential identities (help find mean, variance, and other moments)
06 装饰(Decorator)模式
Learn BeanShell before you dare to say you know JMeter
Fabric.js IText 上标和下标
Save the CDA from the disc to the computer
The underlying principle of go map (storage and capacity expansion)
随机推荐
[bus interface] Axi interface
Online incremental migration of DM database
Acelems Expressway microgrid energy efficiency management platform and intelligent lighting solution intelligent lighting tunnel
创新永不止步——nVisual网络可视化平台针对Excel导入的创新历程
Splice characters in {{}}
Learn BeanShell before you dare to say you know JMeter
[common error] the DDR type of FPGA device is selected incorrectly
农业生态领域智能机器人的应用
7.1 simulation summary
Typescript function details
CubeMx DMA笔记
6.30 year end summary, end of student age
Video cover image setting, put cover images into multiple videos in the simplest way
Use of Baidu map
js中的Map(含leetcode例题)
Map in JS (including leetcode examples)
Global and Chinese market of travel data recorder (VDR) 2022-2028: Research Report on technology, participants, trends, market size and share
Rhcsa --- work on the third day
Collectors.groupingBy 排序
Orthogonal test method and function diagram method for test case design