调整FabricJS中的多边形,折线,线,不使用“比例”

问题描述 投票:0回答:1

如何在不缩放多边形的情况下调整“基于点”的多边形或其他Fabricjs实体的大小?

缩放增加了对象的strokeWidth,我想重写此行为。

我用这种方式做了矩形:

/** Resize instead of scaling example */
this.on({
    'scaling': function(e) {
        var obj = this;
        obj.width = obj.scaleX * obj.width;
        obj.height = obj.scaleY * obj.height;
        obj.scaleX = 1;
        obj.scaleY = 1;
    }
});

椭圆的示例:

    this.on({
        'scaling': function(e) {
            var obj = this;
            obj.width = obj.scaleX * obj.width;
            obj.height = obj.scaleY * obj.height;
            obj.ry = obj.ry * obj.scaleY;
            obj.rx =  obj.rx * obj.scaleX;
            obj.scaleX = 1;
            obj.scaleY = 1;
        }
    });

我的问题不同,因为用户可以手动编辑在画布上绘制的对象属性。

例如,如果我绘制多边形并应用scaleRatio为2,如果我将strokewidth值设置为1,则fabric将在我的多边形上呈现1 * scaleRatio边框。

这就是我正在寻找覆盖尺度行为的原因,我正在为fabric.Rect或fabric.Ellipse做一个真正的“重绘”行为。

javascript fabricjs
1个回答
1
投票

从Fabric.js版本2.7.0开始,现在有一个strokeUniform属性,在启用时,可以防止笔划宽度受到对象缩放值的影响。

obj.set('strokeUniform', true);
© www.soinside.com 2019 - 2024. All rights reserved.