2、Fabric.js 加载图片及相关操作

此文接着上文看…

SVG的方式

fabric.loadSVGFromURL

在这里插入图片描述

function addSVGDraw() {
  fabric.loadSVGFromURL(VACUUM_PUMPS, (objects, options) => {
    let oImg = fabric.util.groupSVGElements(objects, options);

    oImg.set({
      left: 100,
      top: 100,
    });
    canvasContainer.add(oImg);
  });
}

在这里插入图片描述
呀!看起来有点小,我们现在把宽度放大到200…

function addSVGDraw() {
  fabric.loadSVGFromURL(VACUUM_PUMPS, (objects, options) => {
    let oImg = fabric.util.groupSVGElements(objects, options);
    oImg.scale(Number(200 / oImg.width));
    // oImg.scaleToWidth(200);

    oImg.set({
      left: 100,
      top: 100,
    });
    canvasContainer.add(oImg);
  });
}

在这里插入图片描述

旋转 angle & rotate

1、一般情況下旋转是围绕元素的左上角进行旋转的,为了直观地发现变化,我们在背后放一张初始位置的矩形框作为参考。

function addSVGDraw() {
  fabric.loadSVGFromURL(VACUUM_PUMPS, (objects, options) => {
    let oImg = fabric.util.groupSVGElements(objects, options);
    // oImg.scale(Number(200 / oImg.width));
    oImg.scaleToWidth(200);

    oImg.set({
      left: 300,
      top: 300,
      angle: 90, // 图片旋转角度
    });
    // oImg.rotate(90);
    const bgRect = new fabric.Rect({
      top: 300, // 距离容器顶部 300px
      left: 300, // 距离容器左侧 300px
      fill: '#FFC258', // 填充色
      width: 200,
      height: 153,
    });
    canvasContainer.add(bgRect).add(oImg);
  });
}

这分别是旋转0° 90° 180° 270°
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、如果希望围绕元素的中心点进行旋转呢?此处有两种方式:
方式一:设置元素的 originXoringY 属性为 center,他的原理是改变元素 lefttop 设置位置。请看下面示例,背景矩形框没有设置originXoringY ,将元素设置originXoringY ,可以直观地看见元素位置会发生了偏移,如果需要存储元素左上角坐标的话就需要重新计算,很繁琐。

function addSVGDraw() {
  fabric.loadSVGFromURL(VACUUM_PUMPS, (objects, options) => {
    let oImg = fabric.util.groupSVGElements(objects, options);
    // oImg.scale(Number(200 / oImg.width));
    oImg.scaleToWidth(200);

    oImg.set({
      left: 300,
      top: 300,
      originX: 'center',
      originY: 'center',
      // angle: 90, // 图片旋转角度
    });
    const bgRect = new fabric.Rect({
      top: 300, // 距离容器顶部 300px
      left: 300, // 距离容器左侧 300px
      fill: '#FFC258', // 填充色
      width: 200,
      height: 153,
    });
    canvasContainer.add(bgRect).add(oImg);
  });
}

这分别是未进行旋转和旋转90°
在这里插入图片描述
在这里插入图片描述
方式二:centeredRotation:如果为true,则该对象在通过控件旋转时将使用中心点作为变换的原点。需要和rotate 结合使用

function addSVGDraw() {
  fabric.loadSVGFromURL(VACUUM_PUMPS, (objects, options) => {
    let oImg = fabric.util.groupSVGElements(objects, options);
    // oImg.scale(Number(200 / oImg.width));
    oImg.scaleToWidth(200);

    oImg.set({
      left: 300,
      top: 300,
    });
    oImg.centeredRotation = true;
    oImg.rotate(90);
    const bgRect = new fabric.Rect({
      top: 300, // 距离容器顶部 300px
      left: 300, // 距离容器左侧 300px
      fill: '#FFC258', // 填充色
      width: 200,
      height: 153,
    });
    canvasContainer.add(bgRect).add(oImg);
  });
}

这分别是旋转0° 90° 180° 270°
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Image的方式

fabric.Image.fromURL

在这里插入图片描述

function addImageDraw() {
  fabric.Image.fromURL(IcRotateA, (oImg) => {
    oImg.set({
      left: 100,
      top: 100,
    });
    canvasContainer.add(oImg);
  });
}

在这里插入图片描述

旋转 angle & rotate

Image 方式的旋转和SVG一直,可参考上方案例。
更多操作请看 官方文档

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值