根据this answer,我已经构建了fabricJs版本1.7.18,启用了所有功能 - Built output file。
我使用以下代码使用scaleToWidth()更改对象的宽度和高度,但未正确设置新的宽度值。它使用其他值设置宽度。
var obj = canvas.getActiveObject();
obj.scaleX = 1;
obj.scaleY = 1;
obj.scaleToWidth(65);
obj.setCoords();
canvas.renderAll();
//This gives a different width value
console.log(obj.getWidth());
任何人都可以帮我解决这个问题吗?
我的实际要求是:在设置对象宽度时相对设置高度。示例:我有一个宽度为50且高度为40的对象。如果我使用函数setWidth()将宽度设置为100,那么是否有任何内置函数将高度设置为80?
如scaleToWidth中所述,相对于边界框,将对象缩放到给定宽度(按x / y缩放)。
并且getWidth
返回计算转换的对象边界框的宽度。
如果您只想设置对象的宽度,请使用obj.width = value
。
您可以使用scale()或scaleX(),scaleY()来缩放对象。
DEMO
(function() {
var canvas = this.__canvas = new fabric.Canvas('c');
var rect = new fabric.Rect({
left:50,top:50,width:50,height:40
})
canvas.add(rect);
rect.scale(2);
rect.setCoords();
console.log(rect.height,rect.scaleY)
})();
canvas{
border-width: 1pz;
border-style: solid;
border-color: #000;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/2.0.0-rc.3/fabric.js"></script>
<canvas id='c' width=300 height=300></canvas>
如您所知,您正在设置的宽度。计算其改变的百分比设置与高度相同的百分比。你会得到结果。