fabricjs 中自定义控件图标

背景:

想在对象中添加自定义控件,做某些特定操作,例如点击图标复制,新建等
第一步:创建图标对象

//图标属性与点击的回调函数
       textObj:{
          x: 0.5,
          y: 0,
          offsetY: -16,
          offsetX: 16,
          handlerFunction:function(eventData, transform) {   //绑定事件
      } 
    }
   iconCallback:function(image, iconName, obj) {
         const _this=this
          fabric.Object.prototype.controls[iconName] = new fabric.Control({
            x: obj.x,
            y: obj.y,
            offsetY: obj.offsetY,
            offsetX: obj.offsetX,
            cornerSize: obj.size,
            cursorStyle: "pointer",
            mouseUpHandler: obj.handlerFunction,
            render: _this.renderIcon(image._element, 0),
          });
       },
         renderIcon:function(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();
        };
    },
   // 创建图标
   const _this=this
            fabric.Image.fromURL(
              require("../assets/tianjiawenzi.svg"), //你的图标路径
              function (image) {
                _this.iconCallback(image, "textControl", _this.textObj);
              }
            );
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值