Fabric.js 使用纯色遮挡画布(前景色)

2023-10-08 21:59

本文主要是介绍Fabric.js 使用纯色遮挡画布(前景色),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


theme: smartblue

我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第8篇文章,点击查看活动详情


本文简介

点赞 + 关注 + 收藏 = 学会了

如果要覆盖 canvas 里的所有内容你会用什么方法?

清空画布内容?

直接移除 canvas 元素?

创建一个新元素放在 canvas 的上一层?

如果你的项目使用到 fabric.js ,可以直接使用 fabric.js 提供的方法去遮盖画布,而且用法非常简单。

设置 canvas.overlayColor

前景色 overlayColor

fabric.js 提供了一个属性可以设置覆盖色,也可以说是设置前景色。

overlayColor :String|fabric.Pattern

Overlay color of canvas instance. Should be set via fabric.StaticCanvas#setOverlayColor

使用这个属性可以在画布顶层覆盖一层颜色,可以覆盖画布内所有背景和元素。

能覆盖默认背景色

比如我设置了遮盖色为粉红色

01.png

```html

```

如果上面的代码没有设置 overlayColorpink 的话,画布应该是呈现红色背景的。

能覆盖背景图

01.png

```html

```

我在初始完画布之后,再通过 setBackgroundImage 方法设置画布背景图。

从代码书写顺序看,背景图是最后才设置的,但也不会覆盖到 overlayColor

能覆盖元素

如果从直觉上看,背景图是在最底层,所以无法越级覆盖 overlayColor 的话,那我们可以试试创建元素并将元素设置到最顶层,测试一下效果。

01.png

```html

```

使用了 bringToFront() 方法将矩形的层级调到最顶层,也是无法越过 overlayColor

移除覆盖层

在某些应用场景(比如游戏)需要提前把画布加载出来,但用户在某一时刻还没权限查看画布内容时,就可以使用 overlayColor 将画布遮盖起来。

我使用 setTimeout 模拟达成某些业务条件后,移除覆盖层的效果。

02.gif

```html

```

canvas.overlayColor 设置为 null 后,覆盖层就被移除了,设置成 transparent 或者 空字符串 也可以。

移除覆盖层之后,还需要刷新一下画布,我使用了 canvas.renderAll()

更灵活的方法 setOverlayColor

除了在创建画布时设置 overlayColor 外,还可以使用 setOverlayColor() 方法在某个时刻设置画布遮罩颜色。

setOverlayColor(overlayColor, callback) 接收2个参数:

  • overlayColor: 设置前景色或者图案
  • callback: 回调函数(设置完要刷新画布)

你没看错,setOverlayColor 是可以设置图案的,传入一张图片就行。

我将画布的宽高设置成 800 * 800,方便演示。

设置纯色

03.png

js // 省略部分代码 canvas.setOverlayColor( 'yellowgreen', // 设置颜色 canvas.renderAll.bind(canvas) // 刷新画布 )

如果你还想在回调函数中做点其他事情,可以这样写

js // 省略部分代码 canvas.setOverlayColor('pink', function() { console.log('完成') canvas.renderAll() })

设置图像

04.png

js // 省略部分代码 canvas.setOverlayColor( { source: '../../images/bg4.png' }, canvas.renderAll.bind(canvas) )

第一个参数是对象,在 source 里传入图片路径即可。

上面的例子中,图像是会自动重复渲染的,会铺满整个画布。

除此之外,还可以调节不同属性参数。

js // 省略部分代码 canvas.setOverlayColor( { source: '../../images/bg4.png', repeat: 'no-repeat', // 不重复 offsetX: 200, // x轴方向的偏移 offsetY: 100 // y轴方向的偏移 }, canvas.renderAll.bind(canvas) )

注意

有一点是需要注意的,overlayColor 的作用是在画布顶部设置一层覆盖色,但画布的操作并没有限制。

还是上面有矩形的例子。

05.gif

从图中可以看到鼠标指针的变化,可以判断出画布上的矩形仍然能被操作。

代码仓库

⭐ Fabric.js 使用纯色遮盖画布

⭐ Fabric.js setOverlayColor

推荐阅读

👍《Fabric.js 从入门到_ _ _ _ _ _》

👍《Fabric.js 上划线、中划线(删除线)、下划线》

👍《Fabric.js 激活输入框》

👍《Fabric.js 输出精简的JSON》

👍《Fabric.js 动态设置字号大小》

👍《Fabric.js IText 手动设置斜体》

点赞 + 关注 + 收藏 = 学会了

这篇关于Fabric.js 使用纯色遮挡画布(前景色)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/168242

相关文章

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

使用Python绘制3D堆叠条形图全解析

《使用Python绘制3D堆叠条形图全解析》在数据可视化的工具箱里,3D图表总能带来眼前一亮的效果,本文就来和大家聊聊如何使用Python实现绘制3D堆叠条形图,感兴趣的小伙伴可以了解下... 目录为什么选择 3D 堆叠条形图代码实现:从数据到 3D 世界的搭建核心代码逐行解析细节优化应用场景:3D 堆叠图

Springboot如何正确使用AOP问题

《Springboot如何正确使用AOP问题》:本文主要介绍Springboot如何正确使用AOP问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录​一、AOP概念二、切点表达式​execution表达式案例三、AOP通知四、springboot中使用AOP导出

Navicat数据表的数据添加,删除及使用sql完成数据的添加过程

《Navicat数据表的数据添加,删除及使用sql完成数据的添加过程》:本文主要介绍Navicat数据表的数据添加,删除及使用sql完成数据的添加过程,具有很好的参考价值,希望对大家有所帮助,如有... 目录Navicat数据表数据添加,删除及使用sql完成数据添加选中操作的表则出现如下界面,查看左下角从左

python 常见数学公式函数使用详解(最新推荐)

《python常见数学公式函数使用详解(最新推荐)》文章介绍了Python的数学计算工具,涵盖内置函数、math/cmath标准库及numpy/scipy/sympy第三方库,支持从基础算术到复杂数... 目录python 数学公式与函数大全1. 基本数学运算1.1 算术运算1.2 分数与小数2. 数学函数