当前位置: 首页 > news >正文

01-Canvas-使用fabric初始

fabric官网:

https://fabric5.fabricjs.com/demos/

创建画布并绘制

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Fabric.js Demo</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/5.2.4/fabric.min.js"></script>
</head>

<body>
    <canvas id="canvas" width="500" height="500" style="border: 1px solid #000;"></canvas>
    <script>
        const canvas = new fabric.Canvas('canvas');

        // 添加矩形
        const rect = new fabric.Rect({
          left: 100,
          top: 100,
          width: 200,
          height: 100,
          fill: 'red',
          stroke: 'black',
          strokeWidth: 2,
        });
        canvas.add(rect);

        // 添加文本
        const text = new fabric.Text('Hello Fabric.js', {
          left: 50,
          top: 50,
          fontSize: 30,
          fill: 'green'
        });
        canvas.add(text);

        // 监听对象选中事件
        canvas.on('object:selected', function(e) {
          console.log('对象被选中:', e.target);
        });
    </script>
</body>

</html>

在这里插入图片描述

canvas相关内容

canvas.on 是用于监听画布(Canvas)或画布上对象(Object)事件的方法。通过 canvas.on,你可以监听用户交互(如点击、拖拽、缩放等)或对象状态变化(如选中、移动、旋转等)的事件。

canvas.on('事件名称', 回调函数);

事件名称:要监听的事件名称,例如 ‘mouse:down’、‘object:selected’ 等。

回调函数:事件触发时执行的回调函数,通常接收一个事件对象 e 作为参数。

 - 画布事件:   
 mouse:down:鼠标在画布上按下时触发。
 mouse:move:鼠标在画布上移动时触发。
 mouse:up:鼠标在画布上释放时触发。
 object:added:对象被添加到画布时触发。
 object:removed:对象从画布中移除时触发。

 - 对象事件:
 object:selected:对象被选中时触发。
 object:moving:对象正在移动时触发。
 object:scaling:对象正在缩放时触发。
 object:rotating:对象正在旋转时触发。
 object:modified:对象被修改(移动、缩放、旋转等)后触发。

 - 选择事件:
 selection:created:创建选择(选中一个或多个对象)时触发。
 selection:updated:选择更新时触发。
 selection:cleared:选择被清除时触发。 


- 在回调函数中,事件对象 e 通常包含以下常用属性:
e.target:触发事件的对象(例如被选中的对象)。
e.pointer:鼠标的坐标({ x, y })。
e.button:鼠标按钮(左键、右键等)。
e.e:原生事件对象(如 MouseEvent)。 
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Fabric.js Demo</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/5.2.4/fabric.min.js"></script>
</head>

<body>
    <canvas id="canvas" width="500" height="500" style="border: 1px solid #000;"></canvas>
    <script>
        const canvas = new fabric.Canvas('canvas');

        // 添加矩形
        const rect = new fabric.Rect({
            left: 100,
            top: 100,
            width: 200,
            height: 100,
            fill: 'red',
            stroke: 'black',
            strokeWidth: 2,
        });
        canvas.add(rect);
        
        // 监听画布点击事件
        canvas.on('mouse:down', function (e) {
            console.log('画布被点击,坐标:', e.pointer);
        });

        // 监听对象选中事件
        canvas.on('object:selected', function (e) {
            console.log('对象被选中:', e.target);
        });

        // 监听对象移动事件
        canvas.on('object:moving', function (e) {
            console.log('对象正在移动:', e.target);
        });

        // 监听选择事件
        canvas.on('selection:created', function (e) {
            console.log('选择被创建:', e.target);
        });

        canvas.on('selection:updated', function (e) {
            console.log('选择被更新:', e.target);
        });

        canvas.on('selection:cleared', function (e) {
            console.log('选择被清除');
        });

    </script>
</body>

</html>

相关文章:

  • 从零搭建微服务项目Pro(第2-2章——JSR303自定义文件校验+整合至微服务公共模块)
  • Java使用JDBC连接操作Sqlite 笔记250314
  • 【算法】 【c++】字符串s1 中删除所有 s2 中出现的字符
  • 总结 HTTP 协议的基本格式, 相关知识以及抓包工具fiddler的使用
  • 67.Harmonyos NEXT 图片预览组件之性能优化策略
  • 【Scala】
  • 论文分享 | HE-Nav: 一种适用于复杂环境中空地机器人的高性能高效导航系统
  • TIA博途在编译 PLC时出现崩溃的解决方法
  • 测不准关系
  • 【redis】zset 类型:基本命令(上)
  • Java中架构DDD:理解聚合、实体和值对象三种核心构造块
  • C#+EF+SqlServer性能优化笔记
  • Python 科学计算与机器学习入门:NumPy + Scikit-Learn 实战指南
  • 大数据-spark3.5安装部署之local模式
  • ubuntu24.04-qt5-mysql8.0
  • 【网工第6版】第1章 计算机网络概论
  • mac安装navicat及使用
  • CentOS 7 系统上安装 SQLite
  • LDR6500在Type-C转DP视频双向互传方案
  • RAW图与BAYER图异同
  • 美国失去最后的AAA主权评级,继标普、惠誉后再遭穆迪降级
  • 联合国:欢迎俄乌伊斯坦布尔会谈,希望实现全面停火
  • 俄乌谈判开始
  • 美国务卿会见叙利亚外长,沙特等国表示将支持叙利亚重建
  • 国家统计局公布2024年城镇单位就业人员年平均工资情况
  • 金融月评|尽早增强政策力度、调整施策点