【Fabric.js】监听画布or元素的点击、选中、移动、添加、删除销毁、变形等各事件

在fabric使用过程中,如果想要玩各种花样,那么fabric的事件监听是一定、必须、肯定要掌握!!!

例子就用vue项目组件里的代码,fabric的使用跟vue、react、angular之类的框架都没任何关系!
并且本demo只对功能进行讲述,实际项目使用肯定要进行封装,别直接就照抄导致写的丑!

代码中监听事件回调函数里的第一个参数,根据事件的不同,有目标图形信息、坐标信息等,自己一看就看得懂了,不讲解;

代码只简单介绍一些常用的目标监听事件,更全面的、更多花样的玩法自行查阅官网即可~~

<template><div class="cdie"><canvas id="c" ref="canvas"></canvas></div>
</template><script setup lang="ts">
import { ref, onMounted, reactive } from "vue";
import { fabric } from "fabric";
let canvas = null;
onMounted(() => {canvas = new fabric.Canvas("c", {backgroundColor: "grey",minZoom: 1,maxZoom: 1.5,width: 1000,height: 444,});canvas.on('selection:cleared', (e) => {// 画布内取消选中后的事件console.log(canvas.getActiveObject());}).on('selection:created', (e) => {// 初次选中图形目标的事件console.log(canvas.getActiveObject());}).on('selection:updated', (e) => {// 变更选中图形目标的事件console.log(canvas.getActiveObject());}).on('mouse:down', (e) => {// 画布鼠标按下事件console.log(e);}).on('mouse:up', (e) => {// 画布鼠标松开事件console.log(e);}).on('mouse:move', (e) => {// 画布鼠标移动事件console.log(e);}).on('object:added', (e) => {// 当有图形添加进画布时触发的事件console.log(e.target);}).on('object:removed', (e) => {// 当有图形从画布销毁时触发的事件console.log(e.target);}).on('object:moving', (e) => {// 图形移动时触发;console.log(e.target);}).on('object:scaling', (e) => {// 图形缩放时触发;console.log(e.target);})window.fabric = canvasvar line = new fabric.Line([10, 10, 333, 200], {strokeWidth: 1,stroke: "yellow",id: "linexx",});var rect = new fabric.Rect({left: 100,top: 100,width: 100,height: 50,fill: "pink",});var rect2 = new fabric.Rect({left: 400,top: 100,width: 100,height: 50,fill: "yellow",});canvas.add(line);canvas.add(rect);canvas.add(rect2);canvas.renderAll()
});
</script>
<style>
img {margin: 10px !important;
}
</style>
<style scoped lang="less">
.bss {margin: 10px;object-fit: contain;width: 22px;height: 22px;border: 1px solid rgb(46, 46, 46);
}.cdie {width: 100%;text-align: center;display: flex;
}
</style>

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git基础命令,分支,标签的使用【快速入门Git】

Git基础命令&#xff0c;分支&#xff0c;标签的使用【快速入门Git】 Git基础常用命令Git工作流程工作区&#xff0c;暂存区和版本库文件状态获取Git仓库 git init | git clone查看文件状态 git status暂存已修改的文件 git add 查看已暂存和未暂存的修改 git diff提交文件更改…

【Vue】Vue基础入门

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;Vue ⛺️稳重求进&#xff0c;晒太阳 Vue概念 是一个用于构建用户界面的渐进式框架优点&#xff1a;大大提高开发效率缺点&#xff1a;需要理解记忆规则 创建Vue实例 步骤&#xff1a; …

掌握JXLS:高效Java Excel处理库的终极指南

jxls是一个轻量级的Java库&#xff0c;用于基于模板的Excel报表生成。 jxls作为一个开源工具&#xff0c;提供了一种高效且易于维护的方式来处理复杂的Excel导出需求。它允许用户通过在Excel模板中放置特定的标记或注释来定义数据的输出格式和布局&#xff0c;从而避免了编写大…

2024牛客寒假算法基础集训营3部分题解

智乃与瞩目狸猫、幸运水母、月宫龙虾 链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 Ubuntu是一个以桌面应用为主的Linux发行版操作系统&#xff0c;其名称来自非洲南部祖鲁语或豪萨语的"ubuntu"一词&#xff0c;意思是"人性…

基于OpenCV灰度图像转GCode的螺旋扫描实现

基于OpenCV灰度图像转GCode的螺旋扫描实现 引言激光雕刻简介OpenCV简介实现步骤 1.导入必要的库2. 读取灰度图像3. 图像预处理4. 生成GCode5. 保存生成的GCode6. 灰度图像螺旋扫描代码示例 总结 系列文章 ⭐深入理解G0和G1指令&#xff1a;C中的实现与激光雕刻应用⭐基于二值…

光耦固态继电器:2024年发展之路

随着科技的迅猛发展&#xff0c;光耦固态继电器在2024年面临着独特的机遇与挑战。本文将深入分析光耦固态继电器行业的现状&#xff0c;探讨其在技术创新、市场需求等方面的机遇和挑战。 光耦固态继电器技术创新的机遇&#xff1a; 光耦固态继电器作为电气控制领域的关键元件&…

第二十六回 母夜叉孟州道卖人肉 武都头十字坡遇张青-Ubuntu 防火墙ufw配置

武松到县里投案&#xff0c;县官看武松是个汉子&#xff0c;就把诉状改成&#xff1a;武松与嫂一时斗殴杀死&#xff0c;后西门庆前来&#xff0c;两人互殴&#xff0c;打死西门庆。上报东平府。东平府尹也可怜武松&#xff0c;从轻发落&#xff0c;最后判了个&#xff1a;脊杖…

揭开Markdown的秘籍:标题|文字样式|列表

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;Markdown指南、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. ⛳️Markdown 标题二. ⛳️Markdown 文字样式2.1 &#x1f514;斜体2.2 &…

【微机原理与单片机接口技术】MCS-51单片机的引脚功能介绍

前言 MCS-51是指由美国Intel公司生产的一系列单片机的总称。MCS-51系列单片机型号有很多&#xff0c;按功能分位基本型和增强型两大类&#xff0c;分别称为8051系列单片机和8052系列单片机&#xff0c;两者以芯片型号中的末位数字区分&#xff0c;1为基本型&#xff0c;2为增强…

OpenCV 笔记(21):图像色彩空间

1. 图像色彩空间 图像色彩空间是用于定义颜色范围的数学模型。 它规定了图像中可以使用的颜色以及它们之间的关系。它决定了图像中可以显示的颜色范围。不同的色彩空间可以包含不同的颜色范围&#xff0c;因此选择合适的色彩空间对于确保图像在不同设备上看起来一致非常重要。…

一款VMP内存DUMP及IAT修复工具

前言 加壳是恶意软件常用的技巧之一&#xff0c;随着黑客组织技术的不断成熟&#xff0c;越来越多的恶意软件家族都开始使用更高级的加壳方式&#xff0c;以逃避各种安全软件的检测&#xff0c;还有些恶意软件在代码中会使用各种多态变形、加密混淆、反调试、反反分析等技巧&a…

一文读懂:MybatisPlus从入门到进阶

快速入门 简介 在项目开发中&#xff0c;Mybatis已经为我们简化了代码编写。 但是我们仍需要编写很多单表CURD语句&#xff0c;MybatisPlus可以进一步简化Mybatis。 MybatisPlus官方文档&#xff1a;https://www.baomidou.com/&#xff0c;感谢苞米豆和黑马程序员。 Mybat…