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

fabric.js基础使用

1.正方形

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Fabric.js Watermark Example</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/5.3.0/fabric.min.js"></script>
    <style>
      #canvas {
        border: 1px solid #ccc;
      }
    </style>
  </head>
  <body>
    <canvas id="canvas" width="800" height="800"></canvas>
    <script>
      // 初始化 Fabric.js Canvas
      var canvas = new fabric.Canvas("canvas");
      var rect = new fabric.Rect({
        left: 100, // 靠左距离
        top: 100, // 靠右距离
        fill: "red", // 填充颜色
        width: 30, // 宽度
        height: 30, // 高度
      });
      canvas.add(rect);
      console.log("666", canvas);
    </script>
  </body>
</html>

2.圆形,三角形

var rect = new fabric.Rect({
        left: 100, // 靠左距离
        top: 100, // 靠右距离
        fill: "red", // 填充颜色
        width: 30, // 宽度
        height: 30, // 高度
      });
      // 圆形
      var circle = new fabric.Circle({
        radius: 50,
        fill: "green",
        left: 200,
        height: 200,
      });
      // 三角形
      var triangle = new fabric.Triangle({
        fill: "blue",
        width: 80,
        top: 300,
        left: 200,
        height: 200,
      });
      canvas.add(rect);
      canvas.add(circle);
      canvas.add(triangle);

3.图片属性(有水印功能,其实就是添加文字上去)

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Fabric.js Watermark Example</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/5.3.0/fabric.min.js"></script>
    <style>
      #canvas {
        border: 1px solid #ccc;
      }
    </style>
  </head>
  <body>
    <canvas id="canvas" width="800" height="600"></canvas>
    <img
      src="./123/10dfa9ec8a13632762d035b5c1dcb7ec08fa503d69a3.jpg"
      id="img1"
    />
    <script>
      // 初始化 Fabric.js Canvas
      var canvas = new fabric.Canvas("canvas");
      // 加载图片
      fabric.Image.fromURL(
        "./123/10dfa9ec8a13632762d035b5c1dcb7ec08fa503d69a3.jpg",
        function (img) {
          // 设置图片大小和位置(可选)
          img.scaleToWidth(600);
          img.scaleToHeight(600);
          img.angle = 5;
          console.log("img", img);

          // 将图片添加到 Canvas
          canvas.add(img);

          //   // 添加水印文本
          var watermarkText = new fabric.Text("水印", {
            left: 350,
            top: 350,
            fill: "rgba(1, 255, 255, 0.5)", // 半透明白色
            fontSize: 36,
            fontFamily: "Arial",
            angle: -30, // 倾斜角度
          });

          //   // 将水印文本添加到 Canvas
          canvas.add(watermarkText);

          // 渲染 Canvas(Fabric.js 会自动处理,但明确调用也没问题)
          canvas.renderAll();
        }
      );
    </script>
  </body>
</html>

4.路径画多边形

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Fabric.js Watermark Example</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/5.3.0/fabric.min.js"></script>
    <style>
      #canvas {
        border: 1px solid #ccc;
      }
    </style>
  </head>
  <body>
    <canvas id="canvas" width="800" height="600"></canvas>
    <script>
      // 初始化 Fabric.js Canvas
      var canvas = new fabric.Canvas("canvas");
      // M 开始的点 L 中间点 200 200 L 170 200 第三个点 ... z闭合
      var path = new fabric.Path("M 0 0 L 200 200 L 170 200 L 20 170 z");
      path.set({
        left: 120,
        top: 120,
        fill: "red",
      });
      canvas.add(path);
    </script>
  </body>
</html>

相关文章:

  • CrystalDiskInfo电脑硬盘监控工具 v9.6.0中文绿色便携版
  • 平台算法暗战:ebay欧洲站搜索词长度同比缩短2.3字符的应对策略
  • Java 泛型的逆变与协变:深入理解类型安全与灵活性
  • Windows系统中Miniforge安装后的环境变量配置与conda命令不可用解决方案
  • Redis主从复制:告别单身Redis!
  • 深入探索Scala:从基础到进阶的全面总结
  • VectorBT量化入门系列:第二章 VectorBT核心功能与数据处理
  • deep research开源框架:WebThinker
  • FreeRTOS复习
  • 洛谷 U273725:树的叶子节点
  • 眨眼睛查看密码工具类
  • Java Web从入门到精通:全面探索与实战(二)
  • 虚拟机上安装openEuler和openGauss数据库
  • 移动端六大语言速记:第9部分 - 并发与多线程
  • 自动驾驶---苹果又要造车了吗?
  • 【多模态mllm之audio encoder】openai whisper模型解析
  • 2025最新系统 Git 教程(三)
  • 【Project】高并发内存池
  • Qt 入门 4 之标准对话框
  • MySQL高可用性
  • 硅料收储挺价“小作文”发酵光伏板块罕见大涨,知情人士:确实在谈
  • “11+2”复式票,宝山购彩者领走大乐透1170万头奖
  • 北洋“修约外交”的台前幕后——民国条约研究会档案探研
  • 《广州大典研究》集刊发展座谈会:“广州学”的传承与创新
  • 多元史料下的“西狩”叙事——《“庚子西狩”中外资料六种》解题
  • 浙江公开征集涉企行政执法问题线索,包括乱收费、乱罚款等