FabricJs 1.7.18 scaleToWidth()没有设置给定的宽度

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

根据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?

javascript html canvas fabricjs
1个回答
1
投票

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>

如您所知,您正在设置的宽度。计算其改变的百分比设置与高度相同的百分比。你会得到结果。

© www.soinside.com 2019 - 2024. All rights reserved.