前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Fabric.js 圆形笔刷

Fabric.js 圆形笔刷

作者头像
德育处主任
发布2022-06-10 15:18:17
2.2K0
发布2022-06-10 15:18:17
举报
文章被收录于专栏:前端数据可视化

本文介绍 Fabric.js 的圆形笔刷功能。

圆形笔刷是作用在 “自由绘制” 的画笔之上的。从名字就可以看出,这个笔刷会用一个个圆形来填充绘制的路径。

看图会更直观

Fabric.js 会使用不同频率、大小、颜色深浅来绘制出上图效果。

本文使用 Fabric.js 5.2.1

常用配置

要做出上图的效果,首先需要将画布设置成 绘画模式

初始化画布

首先需要初始化画布,之后的每个属性和方法讲解,都会基于这段代码。

代码语言:javascript
复制
<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

上面两种写法选一种即可。

开启圆形笔刷

将笔刷设置成圆形同样有2种写法。

写法1

代码语言:javascript
复制
// 省略初始化代码

canvas.freeDrawingBrush = new fabric.CircleBrush(canvas)
复制代码

写法2

代码语言:javascript
复制
// 省略初始化代码

let circleBrush = new fabric.CircleBrush()
circleBrush.initialize(canvas)
canvas.freeDrawingBrush = circleBrush
复制代码

上面两种写法用那种都行,但都会相应影响后续的代码量。

如果你后续要经常修改画笔的属性,我建议用 写法2

设置笔刷宽度

如果上面那步你使用了 写法1 ,要设置笔刷宽度需要这样写

代码语言:javascript
复制
// 省略初始化代码

canvas.freeDrawingBrush = new fabric.CircleBrush(canvas) // 创建圆形笔刷

canvas.freeDrawingBrush.width = 6 // 笔刷宽度,默认10
复制代码

如果你使用了 写法2 ,设置的代码如下所示

代码语言:javascript
复制
// 省略初始化代码

// 创建圆形笔刷
let circleBrush = new fabric.CircleBrush()
circleBrush.initialize(canvas)
canvas.freeDrawingBrush = circleBrush

circleBrush.width = 30
复制代码

设置笔刷颜色

代码语言:javascript
复制
// 省略初始化代码

circleBrush.color = 'pink'
复制代码

我将笔刷设置成粉红色了,除了关键字颜色,还支持 rgb 等设置方法

代码语言:javascript
复制
circleBrush.color = '#c123a8'

circleBrush.color = 'rgb(10, 230, 120)'
复制代码

设置阴影

代码语言:javascript
复制
// 省略初始化代码

circleBrush.shadow = new fabric.Shadow({
  blur: 10, // 羽化程度
  offsetX: 20, // x轴偏移量
  offsetY: 20, // y轴偏移量
  color: '#30e3ca' // 投影颜色
})
复制代码

基础笔刷 设置阴影的方法是一样的。

常用方法

常用的方法也有几个,但有部分是需要注意的,要组合使用才有效果。

鼠标按下

代码语言:javascript
复制
// 省略初始化代码

circleBrush.onMouseDown = function (pointer, e) {
  console.log(pointer)
  console.log(e)
}
复制代码

使用 onMouseDown 可以设置鼠标按下时要触发的事件。该事件有2个参数。

鼠标松开

代码语言:javascript
复制
// 省略初始化代码

circleBrush.onMouseUp = function (pointer) {
  console.log(pointer)
}
复制代码

和 “鼠标按下” 一样简单。使用 onMouseUp 可以设置鼠标松开的事件。

鼠标移动时

代码语言:javascript
复制
// 省略初始化代码

circleBrush.onMouseMove = function (pointer, e) {
  console.log(pointer)
  console.log(e)
  circleBrush.drawDot(pointer)
}
复制代码

使用 onMouseMove 可以设置鼠标移动时的事件。但在该事件中还需要执行 drawDot 事件,并传入当前鼠标位置才能进行正确绘制。

在鼠标移动事件中还能添加更多方法,比如在绘制的基础上,在附近再画多一条线

代码语言:javascript
复制
// 省略初始化代码

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 圆形笔刷的常用玩法~

代码仓库

原生版本的代码

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 常用配置
    • 初始化画布
      • 开启圆形笔刷
        • 设置笔刷宽度
          • 设置笔刷颜色
            • 设置阴影
            • 常用方法
              • 鼠标按下
                • 鼠标松开
                  • 鼠标移动时
                  • 代码仓库
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档