javascript - fabricjs 如何在其他缩放时保持组元素的固定大小?

标签 javascript frameworks html5-canvas fabricjs

你好 我使用 fabricjs 来玩 html Canvas 。 我创建了 Canvas 并在上面添加了一组对象。

在一组对象上,我需要在缩放对象时保持某些对象的固定宽度和高度。

我使用 'object:scaling' 事件 在事件对象改变大小时获取它,我读取组中的每个对象并分配 element[i].set({ 'radius':5}) 在我希望保持不变的组对象上。

但结果是,所有组都反对调整大小。

我向您展示了 object:scaling 事件的片段:

 canvas.on('object:scaling',function(e){

        var activeObject1 = e.target;

        var elements = e.target._objects;

          var count_elements =  elements.length;


            for(var i = 0; i < count_elements; i++) {

                var type = elements[i].typeCircle;

                if(type == "parts"){
                                      //elements[i].set({"radius":8,"fill":"#abcde2","stroke":"#367827"});
                    //elements[i].set('radius',8);
                    /*elements[i].setWidth(16);
                    elements[i].setHeight(16);
                    elements[i].currentWidth = 16;
                    elements[i].currentHeight = 16;
                    elements[i].scaleX = 1;
                    elements[i].scaleY = 1;
                    console.log(elements[i]);
                    canvas.renderAll();*/
                }
              }
         });

我应该在 for 循环中写入什么以保持某些对象的固定大小? 我在上面使用的所有内容,除了 "fill":"#abcde2","stroke":"#367827"

外,它们都不起作用

如果有人在 fabricjs 上遇到过类似的事情,请告诉我。

最佳答案

您必须使用 setScaleX() 和 setScaleY() 方法。 这是一个例子...

var Rect = new fabric.Rect({
  width: 200,
  height: 200,
  top: 100,
  left: 100,
  fill: 'rgba(255,0,0,0.5)',
  stroke: '#000',
  strokeWidth: 1,
});

var Circle = new fabric.Circle({
  left: 100,
  top: 100,
  fill: '#FF00FF',
  stroke: 'red',
  radius: 100,
  opacity: 1,
});

var Group = new fabric.Group([Rect, Circle])
canvas.add(Group)
canvas.on({
  'object:scaling': onChange
})

function onChange(obj) {
    var circle = obj.target.item(1),
        group = obj.target,
        scaleX = circle.width / group.getWidth(),
        scaleY = circle.height / group.getHeight();
    circle.setScaleX(scaleX);
    circle.setScaleY(scaleY);

}

JSFIDDLE

关于javascript - fabricjs 如何在其他缩放时保持组元素的固定大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28497274/

相关文章:

ios - 继承框架的ViewController类

javascript - toDataURL的输出是base64,如何将上传时间和带宽减少1/3?

javascript - 对象的自定义属性在 Canvas 中被清除为 json

javascript - HTML5 将 png 缓冲区加载到 Canvas 中(用于流媒体目的)

javascript - tinymce中如何获取当前区 block 位置?

javascript - 迭代 DOM 元素

javascript - JSON中的正则表达式模式?

php - Flat PHP Legacy App - 如何包装在 silex 路由中

javascript - Asp 网络核心 MVC : Passing a list of string as a parameter in javascript

php - 为什么一个非常好的 PHP 框架 - Qcodo(或 Qcubed - 它的分支) - 如此不受欢迎?