Fabric.js 修改画布交互方式到底有什么用?

news2025/2/2 2:44:36

本文简介

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


fabric.js 为我们提供了很多厉害的方法。今天要搞明白的一个东西是 canvas.interactive

官方文档对 canvas.interactive 的解释是:

Indicates that canvas is interactive. This property should not be changed.

canvas.interactive 默认值是 true ,官方建议我们不要修改该值,但我偏不。



动手试试

先来看看将 interactive 设为 false 之后有什么效果。

创建一个画布,并在上面添加一个矩形。

file

<canvas id="canvasBox" width="400" height="400" style="border: 1px solid #ccc;"></canvas>

<script>
  let canvas = new fabric.Canvas('canvasBox', {
    interactive: false // 隐藏交互模式
  })

  let rect = new fabric.Rect({
    top: 60,
    left: 60,
    width: 60,
    height: 60,
    fill: '#08d9d6'
  })

  canvas.add(rect)
</script>

从上面的效果可以看到,选中元素后并没有出现默认的控制点,但还是可以操作元素的缩放和旋转的(旋转的那个操作,我是猜了大概的操作点在那个位置)。

难怪官方劝大家不要修改 interactive ,确实有他的道理。



和 hasControls 、hasBorders 的区别

hasControlshasBorders 需要在图形元素上设置。

hasControls 设置成 false 就会取消元素选中时的控制角。

hasBorders 设置成 false 就会取消元素被选中时的控制边。

file

<canvas id="canvasBox" width="400" height="400" style="border: 1px solid #ccc;"></canvas>

<script>
  let canvas = new fabric.Canvas('canvasBox')

  let rect = new fabric.Rect({
    top: 60,
    left: 60,
    width: 60,
    height: 60,
    fill: '#08d9d6',
    hasControls: false, // 取消控制角
    hasBorders: false // 取消控制边
  })

  canvas.add(rect)
</script>

从上图的效果可以看出,将 hasControlshasBorders 设置成 false 后,元素可以移动,但不能缩放和旋转。



和 StaticCanvas 的区别

如果不希望画布可交互,可以使用 StaticCanvas 创建一个静态的画布。

只要将 new fabric.Canvas 改成 new fabric.StaticCanvas 就行了。

file

<canvas id="canvasBox" width="400" height="400" style="border: 1px solid #ccc;"></canvas>

<script>
  let canvas = new fabric.StaticCanvas('canvasBox')

  let rect = new fabric.Rect({
    top: 60,
    left: 60,
    width: 60,
    height: 60,
    fill: '#08d9d6'
  })

  canvas.add(rect)
</script>

瞧,使用了 StaticCanvas 创建的画布,里面的元素选不中也拉不动。

而只是将 interactive 设置成 false 的话,是可以进行操作的。



总结

  1. interactive 设置为 false:可操作(移动、旋转、缩放等),但看不见控制角和控制边。
  2. 将元素的 hasControlshasBorders 设置成 false :可移动,但不能旋转和缩放,同时看不见控制角和控制边。
  3. 使用 StaticCanvas 创建画布:元素无法被选中,也无法移动、选中、缩放等操作。

综上所述,在日常开发中,canvas.interactive 真的好像没啥用耶(我还没想到有什么应用场景)。



代码仓库

⭐Fabric.js 修改画布交互方式



推荐阅读

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

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

👍《Fabric.js 激活输入框》

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

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

👍《Fabric.js 橡皮擦的用法(包含恢复功能)》


点赞 + 关注 + 收藏 = 学会了 代码仓库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/104207.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FPU与VFP最全面解释

本文希望能将FPU以及ARM中的FPU介绍清楚。 1. FPU&#xff08;Floating-Point Unit&#xff09; 浮点运算单元是处理器内部用于执行浮点数计算的逻辑部件&#xff0c;或者说硬件电路。不是所有的处理器都有该功能。浮点运算满足IEEE 754的标准&#xff0c;所谓IEEE 754标准&a…

关于Linux的动静态库

文章目录什么是动静态库生成静态库生成发布生成动态库发布使用库使用静态库查看系统头文件路径查看系统库文件路径使用库文件和头文件指定路径搜索头文件卸载库使用动态库动态库的运行搜索路径什么是动静态库 静态库&#xff08;.a&#xff09;&#xff1a;程序在编译链接的时…

再携手,齐并进!菊风助力宁波银行坐席PUSH外呼项目

随着“金融数字化”逐步成为金融行业的新浪潮&#xff0c;运用更加灵活的触达手段提升营销效果&#xff0c;促成业务闭环愈发成为银行业等金融机构角逐数字化转型成功的关键。 在此背景下&#xff0c;金融机构对于实时音视频技术的应用也从普遍的「呼入」需求逐步扩展到创新的…

LinkedHashSet源码解析

LinkedHashSet源码解析 问题 &#xff08;1&#xff09;LinkedHashSet 的底层使用什么存储元素&#xff1f; &#xff08;2&#xff09;LinkedHashSet 与 HashSet 有什么不同&#xff1f; &#xff08;3&#xff09;LinkedHashSet 是有序的吗&#xff1f; &#xff08;4&a…

Vue2与Vue3 setup的使用差异与对比

最近一直在做vue2的技术栈升级&#xff0c;于是心血来潮&#xff0c;就想要不写篇文章总结一下vue2和vue3在使用上的不同吧&#xff0c;于是乎&#xff0c;我们这就开始吧&#xff01; 首先说明一下&#xff0c;vue3有多种写法&#xff0c;本文使用setup语法糖&#xff0c;不考…

硬核!Github 星标 79.4K 的阿里强推 Java 面试参考指南到底有多强?

谈到 Java 面试&#xff0c;相信大家第一时间脑子里想到的词肯定是金三银四&#xff0c;金九银十。好像大家的潜意识里做 Java 开发的都得在这个时候才能出去面试&#xff0c;跳槽成功率才高&#xff01;但 LZ 不这么认为&#xff0c;LZ 觉得我们做技术的一生中会遇到很多大大小…

组件技术--设计--jsp+servlet+bean+MySQL 简单的登录注册案例

JavaBeanMySQLjspservlet 简单的登录注册案例登录注册案例需求核心系统组成Javaweb项目框架基本思想BeancounterUserDaoUserDaoservletLoginCljspindex.jspLoginServlet.jspregister.jspregisterMessage.jspwelcome.jsptargetpom.xmlWEB-INFweb.xml登录注册案例需求 本项目利用…

【论文阅读笔记】CycleISP: Real Image Restoration via Improved Data Synthesis

论文地址&#xff1a;https://arxiv.org/abs/2003.07761 代码地址&#xff1a;https://github.com/swz30/CycleISP 论文小结 总的来说&#xff0c;就是现实世界中无法获取有效的图像对。且之前合成噪声的方式是在sRGB上添加高斯白噪声&#xff0c;但对于相机传感器成像管道来说…

工控CTF之协议分析7——OMRON

协议分析 流量分析 主要以工控流量和恶意流量为主&#xff0c;难度较低的题目主要考察Wireshark使用和找规律&#xff0c;难度较高的题目主要考察协议定义和特征 简单只能简单得干篇一律&#xff0c;难可以难得五花八门 常见的工控协议有&#xff1a;Modbus、MMS、IEC60870、…

同源策略跨域

目录1.同源策略限制的意义1.请求协议 均为 http2.主机此这为 localhost3.端口号不同 一个 8080 一个 50002.注意3.解决跨域代理服务器 80801.同源策略限制的意义 让前端发送的请求不能随意访问其他端口的服务器&#xff0c;一定程度保护服务器和用户的隐私 1.请求协议 均为 …

nexus上传jar包

nexus上传自定义starter1、普通jar包和springboot的starter1.1、starter上传简介1.2、上传方法2.1.1、setting.xml文件2.1.2、项目中的pom文件1.3、具体部署2、父pom文件上传这里我们主要讲解两种&#xff0c;一种是jar包上传&#xff0c;包含普通jar包和springboot的starter包…

jmeter简单压力测试

测试目的&#xff1a;10个用户并发访问一个接口&#xff08;http://127.0.0.1:8080/dfm/login.action&#xff09;&#xff0c;能否正常响应。 一、打开JMeter 二、右击“测试计划”&#xff0c;添加线程组 三、设置线程组的线程数 JMeter中的线程组&#xff0c;类似于LoadRunn…

RCTFweb复现

文章目录filechecker_minieasy_uploadfilechecker_plusfilechecker_pro_maxezbypassezruoyifilechecker_mini 给了附件&#xff0c;代码比较短&#xff0c;先审计一下。 在这里发现了file –b命令&#xff0c;且filepath部分可控&#xff0c;明显的ssti漏洞&#xff0c;没过…

Clickhouse引擎之kafka

Clickhouse kafka引擎需要结合kafka使用&#xff0c;需要确保已经安装clickhouse和kafka 实战环境&#xff1a; Clickhouse-server 版本&#xff1a;22.4.5 Kafka版本&#xff1a;kafka_2.13-3.2.0 Clickhouse数据库执行&#xff1a; 1、使用引擎创建一个kafka消费者 CREA…

【OpenCV+Qt】使用车牌识别系统EasyPR识别车牌号

EasyPR是一个中文的开源车牌识别系统&#xff0c;其车牌识别划分为了两个过程&#xff1a;即车牌检测&#xff08;Plate Detection&#xff09;和字符识别&#xff08;Chars Recognition&#xff09;两个过程&#xff1a; 车牌检测&#xff08;Plate Detection&#xff09;&am…

用于医疗诊断的花青染料ICG-Sulfo-EG8-OSu,

凯新生物产品介绍&#xff1a; (ICG)是一个用于医疗诊断的花青染料。它是用于测定心输出量、肝脏功能、肝血流量,和对于眼科血管造影术。它有一个最大吸收光谱在800nm附近。这些红外波段可以穿透视网膜层,相比荧光素血管造影ICG血管造影图像允许进入更深的血液循环。传统的激活…

华为机试_HJ24 合唱队【中等】【收藏】

目录 描述 输入描述&#xff1a; 输出描述&#xff1a; 解题过程 提交代码 学习代码 代码一 代码二 收藏点 描述 N 位同学站成一排&#xff0c;音乐老师要请最少的同学出列&#xff0c;使得剩下的 K 位同学排成合唱队形。 设KK位同学从左到右依次编号为 1&#xff0…

想学Redis却不会安装,这有一个快速入门请拿去

一. Redis简介 1.什么是Redis Redis是一个完全开源免费、且遵守BSD协议的&#xff0c;高性能(NOSQL)的key-value数据库。Redis本身使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型&#xff0c;并提供多种语言的API。 2.Redis特点 Redis具有如下特点&#xff1…

DJ13-2 汇编语言程序设计

目录 一、顺序程序设计 二、分支程序设计 1. 用比较/测试命令条件转移指令实现分支 2. 采用跳转表实现多路分支 三、循环程序设计 1. 计数循环程序设计 2. 条件判断循环程序设计 四、子程序设计 1. 子程序设计举例 2. 主程序和子程序设计举例 一、顺序程序设计 举例…

低代码为什么会受到企业青睐?是何原因?

低代码为什么会受到企业青睐&#xff1f;是何原因&#xff1f;回答这个问题&#xff0c;只需用4个“更”字&#xff0c;就能很好的概括。 1、更快&#xff08;开箱即用&#xff09; 2、更省&#xff08;人力、时间成本&#xff09; 3、更合适&#xff08;需求贴合业务&#…