场景

Fabricjs一个简单强大的Canvas绘图库快速入门:

Fabricjs一个简单强大的Canvas绘图库快速入门_BADAO_LIUMANG_QIZHI的博客-CSDN博客

在上面的基础上,怎样监听画布上鼠标按下、移动、抬起时的事件,以及画布上对象

被选中、被移动、被旋转、被加入和被移除的事件。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi 
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

1、画布的事件监听

      //鼠标按下时事件canvas.on('mouse:down', function(options) {console.log("mouse:down"+options.e.clientX, options.e.clientY)})//鼠标移动时事件canvas.on('mouse:move', function(options) {console.log("mouse:move"+options.e.clientX, options.e.clientY)})//鼠标抬起时事件canvas.on('mouse:up', function(options) {console.log("mouse:up"+options.e.clientX, options.e.clientY)})

2、对象的事件监听

      //绘制不规则图形var path = new fabric.Path('M 0 0 L 200 100 L 170 200 z');path.set({ left: 120, top: 120,fill:'red' });//选中监听事件path.on('selected', function() {console.log('selected');});//对象移动监听事件path.on('moving', function() {console.log('moving');});//对象被旋转监听事件path.on('rotating', function() {console.log('rotating');});//对象被加入监听事件path.on('added', function() {console.log('added');});//对象被移除监听事件path.on('removed', function() {console.log('removed');});

3、完整示例代码

<template><div><div><canvas id="c" width="800" height="800"></canvas></div></div>
</template><script>
import { fabric } from "fabric";
export default {name: "HelloFabric",data() {return {};},mounted() {this.init();},methods: {init() {// create a wrapper around native canvas element (with id="c")// 声明画布var canvas = new fabric.Canvas("c");//鼠标按下时事件canvas.on('mouse:down', function(options) {console.log("mouse:down"+options.e.clientX, options.e.clientY)})//鼠标移动时事件canvas.on('mouse:move', function(options) {console.log("mouse:move"+options.e.clientX, options.e.clientY)})//鼠标抬起时事件canvas.on('mouse:up', function(options) {console.log("mouse:up"+options.e.clientX, options.e.clientY)})// create a rectangle object// 绘制图形var rect = new fabric.Rect({left: 80, //距离画布左侧的距离,单位是像素top: 80, //距离画布上边的距离fill: "red", //填充的颜色width: 20, //方形的宽度height: 20, //方形的高度});// "add" rectangle onto canvas//添加图形至画布canvas.add(rect);//添加图片fabric.Image.fromURL('images/light.png', function(oImg) {// scale image down, and flip it, before adding it onto canvas//缩小图像并翻转它oImg.scale(0.5).set('flipX', true);canvas.add(oImg);});//绘制不规则图形var path = new fabric.Path('M 0 0 L 200 100 L 170 200 z');path.set({ left: 120, top: 120,fill:'red' });//选中监听事件path.on('selected', function() {console.log('selected');});//对象移动监听事件path.on('moving', function() {console.log('moving');});//对象被旋转监听事件path.on('rotating', function() {console.log('rotating');});//对象被加入监听事件path.on('added', function() {console.log('added');});//对象被移除监听事件path.on('removed', function() {console.log('removed');});canvas.add(path);},},
};
</script>

Fabricjs对Canvas画布和对象的事件监听相关推荐

  1. html5鼠标事件监听,HTML5 Canvas鼠标与键盘事件

    演示HTML5 Canvas鼠标事件,获取Canvas对象上的鼠标坐标,演示键盘事件 通过键盘控制Canvas上对象移动. Canvas对象支持所有的JavaScript的鼠标事件,包括鼠标点击(Mo ...

  2. java中事件监听_Java中的事件监听机制

    鼠标事件监听机制的三个方面: 1.事件源对象: 事件源对象就是能够产生动作的对象.在Java语言中所有的容器组件和元素组件都是事件监听中的事件源对象.Java中根据事件的动作来区分不同的事件源对象,动 ...

  3. java抽象机制_Java很好学:接口+抽象类+事件监听机制

    接口?抽象类? 首先知道知道下接口.抽象类的概念 接口:只含有常量和抽象方法(只有方法名和参数不含方法体的方法) 抽象类:可以定义常量和抽象方法(和接口一样),还可以定义变量和普通方法和构造方法(和一 ...

  4. Java 创建事件Event、事件监听EventListener、事件发布publishEvent

    一.概述 个人认为,事件机制一般可由:事件源source,事件对象Event,事件监听EventListener,事件发布publishEvent组成 事件源:引起事件发生的源: User用户信息, ...

  5. 雷火神山直播超两亿,Web播放器事件监听是怎么实现的?

    Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播.在视频业务大数据平台中,播放数据的统计分析非常重要,所以We ...

  6. 二、Vue基础语法学习笔记——事件监听v-on、条件判断(v-if、v-else-if、v-else、v-show)、循环遍历(v-for遍历数组对象,key属性、检测数组更新)、图书案例、双向绑定

    四.事件监听 在前端开发中,我们需要经常和用于交互. 这个时候,我们就必须监听用户发生的时间,比如点击.拖拽.键盘事件等等 在Vue中如何监听事件呢?使用v-on指令 v-on介绍 作用:绑定事件监听 ...

  7. html怎么给没张图片添加单击事件,如何在Canvas上的图形/图像绑定事件监听的实现...

    HTML中只能为元素/标签绑定监听函数: Canvas绘图中只有一个元素-canvas,每一个图形/图像都不是元素,不能直接进行事件绑定. 解决办法:"事件委托"--让canvas ...

  8. ol-ext transform 对象,旋转、拉伸、放大(等比例缩放),事件监听

    官网 示例地址:ol-ext 代码地址: ol-ext: openlayers开源插件库 文档api:查看OpenLayers - Welcome 简单功能示例 自己项目中用到的是 等比例缩放,旋转, ...

  9. Java学习——复习 第八天 Swing程序设计、AWT绘图、事件监听

    16.Swing程序设计 1.Swing概述--Swing主要用来开发GUI程序,GUI即图形图像界面,他是应用程序提供给用户操作的图形界面,包括窗口.菜单.按钮等元素. 1.1Swing的特点--允 ...

最新文章

  1. linux架构接口层教程,在LINUX平台上进行成功实现RIL层功能和框架层应用
  2. 映射到此登录名的用户_小课堂:什么是数据映射以及如何进行数据映射
  3. ant 编译java 项目_使用ant编译打包、部署简单的javaweb项目 --01
  4. 《美团机器学习实践》高清PDF+思维导图+美团算法团队
  5. android 字体 动画,android 对绘制的文本添加动画
  6. thinkinjava21.4.4----java中interrupt和interrupted方法的使用和线程退出的时机
  7. es6 super关键字
  8. 计算机应用基础-0025,【技工学校《计算机应用基础》课程教学特点及讲授策略】 计算机应用基础...
  9. 移动机器人路径规划算法研究综述(一)
  10. 使用SpringBoot+RabbitMQ框架集成例程
  11. python 音乐相册_‎App Store 上的“魔力相册-音乐相册、视频电子相册制作工具”...
  12. 关于UnityPC端打包参数设置及发布PC端时固定分辨率
  13. python 文件 .py .pyc .pyw .pyo .pyd
  14. linux切换用户时报错 bash: /home/book/.bashrc: 权限不够 bash-4.2$
  15. 全面剖析《自己动手写操作系统》第四章---加载Loader.bin
  16. hexo博客如何绑定个人域名
  17. servlet那边处理完登录,在jsp这边弹框显示结果
  18. 氰基乙酸乙酯(CAS 105-56-6)的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  19. 四阶行列式计算_【免费专题课】线代之行列式的计算
  20. 《那些年我们追过的Wrox精品红皮计算机图书》有奖活动

热门文章

  1. 初识Linux——菜鸟篇
  2. Longest Y 字符串,货仓选址模型(600)
  3. 小鱼儿 c语言,小鱼儿请进.
  4. zigbee抗干扰matlab仿真,基于Zigbee的扩频通信MATLAB仿真.doc
  5. php 正则表达式 取所有内容,php正则表达式获取内容所有链接
  6. 0点mysql_【转载】MySQL查询当天0点,昨天时间
  7. 系统下装软件_电力二次设备自动测试系统
  8. JUC系列(十) | ForkJoin框架 并行处理任务
  9. sql 获取两个月内数据_如何在3个月的时间内自学成为数据分析师?
  10. access超过255列数据_Access的数据类型,与Excel虽类似,数据库+sql更适合大量数据管理...