fabric.js笔记

// 实例化canvas 画布
    this.canvas = new fabric.Canvas("canvas", {
      // 元素对象被选中时保持在当前z轴
      preserveObjectStacking: true,
    });
    // 设置选中后边框的效果
    fabric.Object.prototype.set({
      transparentCorners: false,//边框方点: false 实心  true  空心
      borderColor: '#00FFFC',//边框颜色
      cornerStrokeColor: '#00FFFC',
      cornerColor: '#fff',//边框方点的颜色
      cornerSize: 6,//边框方点的大小
    });
    fabric.Object.prototype.setControlsVisibility({
      mtr: false,//是否显示旋转按钮
    });
    // 旋转按钮样式
    fabric.Object.prototype.controls.mtr.withConnection = false; //主体和旋转按钮的连接线
    fabric.Object.prototype.controls.mtr.offsetY = -20;
    fabric.Object.prototype.controls.mtr.cursorStyle = 'pointer';
    fabric.Object.prototype.controls.mtr.opacity = 0;
// 自定义旋转图标
      const iconURL = 'https://i.328888.xyz/2023/03/13/v64pZ.th.jpeg';
      // const iconURL = "@/assets/img/icon/reduce.png";
      const callback = (image, isError) => {
        if (!isError) {
          fabric.Object.prototype.controls.mtr = new fabric.Control({
            x: 0,
            y: -0.5,
            offsetY: -20,
            cursorStyle: 'pointer',
            actionName: 'rotate',
            actionHandler: fabric.controlsUtils.rotationWithSnapping,
            cursorStyleHandler: fabric.controlsUtils.rotationStyleHandler,
            // 渲染图标
            render: that.renderIcon(image._element, 0),
            // 设置控制点大小
            cornerSize: 12
          });
        }
      };
      fabric.Image.fromURL(iconURL, callback);

// 渲染图标的方法
    renderIcon(image, initialAngle) {
      return function (ctx, left, top, styleOverride, fabricObject) {
        let size = this.cornerSize;
        ctx.save();
        ctx.translate(left, top);
        ctx.rotate(fabric.util.degreesToRadians(fabricObject.angle + initialAngle));
        ctx.drawImage(image, -size / 2, -size / 2, size, size);
        ctx.restore();
      }
    },

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值