【问题标题】:Scale fabric.js canvas objects缩放 fabric.js 画布对象
【发布时间】:2015-04-02 18:56:06
【问题描述】:

我的页面上有一个 fabric.js 画布,我希望它具有响应性。我的代码适用于缩放画布本身,但不适用于我在上面绘制的对象。任何想法?我搜索了 SO,但找不到适合我的解决方案。

var resizeCanvas;

resizeCanvas = function() {
  var height, ratio, width;
  ratio = 800 / 1177;
  width = tmpl.$('.canvas-wrapper').width();
  height = width / ratio;

  canvas.setDimensions({
    width: width,
    height: height
  });
};

Meteor.setTimeout(function() {
  return resizeCanvas();
}, 100);

$(window).resize(resizeCanvas);

【问题讨论】:

    标签: javascript canvas meteor html5-canvas fabricjs


    【解决方案1】:

    这是我的缩放功能 - 我们缩放画布,然后遍历所有对象并缩放它们。

    打电话给zoomIt(2.2)

    function zoomIt(factor) {
    canvas.setHeight(canvas.getHeight() * factor);
    canvas.setWidth(canvas.getWidth() * factor);
    if (canvas.backgroundImage) {
        // Need to scale background images as well
        var bi = canvas.backgroundImage;
        bi.width = bi.width * factor; bi.height = bi.height * factor;
    }
    var objects = canvas.getObjects();
    for (var i in objects) {
        var scaleX = objects[i].scaleX;
        var scaleY = objects[i].scaleY;
        var left = objects[i].left;
        var top = objects[i].top;
    
        var tempScaleX = scaleX * factor;
        var tempScaleY = scaleY * factor;
        var tempLeft = left * factor;
        var tempTop = top * factor;
    
        objects[i].scaleX = tempScaleX;
        objects[i].scaleY = tempScaleY;
        objects[i].left = tempLeft;
        objects[i].top = tempTop;
    
        objects[i].setCoords();
    }
    canvas.renderAll();
    canvas.calcOffset();
    }
    

    【讨论】:

    • 这个缩放系数是比例还是别的什么?
    • 百分比。在示例中,2.2 将是原始的 220%。
    • @zimt28 你能发布你如何结合resize事件使用这个功能吗?这个函数需要一个比例因子 - 你是如何从 resize 事件中得到它的?
    • @MichaelBates 旧代码,但可能足以了解:gist.github.com/zimt28/b33229fdb9559b01803c
    • Piyush,现在 Fabric.js 直接支持。您可以使用内置 API 缩放画布。如果我是你,我不会使用它。
    【解决方案2】:

    对于那些寻找用于缩放(也称为缩放)画布的织物内置方法的人,请查看setZoom

    【讨论】:

      猜你喜欢
      • 2012-09-25
      • 2016-04-10
      • 2013-09-28
      • 2020-03-02
      • 2015-06-20
      • 2013-02-08
      • 2016-12-22
      • 2014-05-17
      • 2015-12-26
      相关资源
      最近更新 更多