所以我的画布上有一个图像,我试图使图像适合画布(我希望画布内的图像与画布大小相同)。我使用scaleToWidth()和scaleToHeight()来设置图像大小。但只有其中一个有效。如果我只使用scaleToWidth(),那么它会正确缩放宽度,如果我只使用,scaleToHeight()那么它会正确缩放高度。在下面的代码中,高度被正确缩放,因为它写在下面的行中oImg.scaleToWidth(cDim.clientWidth)。但我希望宽度和高度都符合我的值。我怎样才能做到这一点? const canvas = new window.fabric.Canvas('c'); const cDim = document.getElementById("canvas-dimension"); console.log("Canvas Height: " + cDim.clientHeight); console.log("Canvas Width: " + cDim.clientWidth) let planURL = baseURL + "dream" + "/" + "plan"; window.fabric.Image.fromURL(planURL, (oImg) => { //let scaleW = cDim.clientWidth / oImg.getWidth; // let scaleH = cDim.clientHeight / oImg.getHeight; // oImg.scaleX(scaleW) oImg.scaleToWidth(cDim.clientWidth) oImg.scaleToHeight(cDim.clientHeight) canvas.setBackgroundImage(oImg); canvas.renderAll(); },{ crossOrigin: 'anonymous'}); setCanvas(canvas)对此的任何帮助或解决方法将不胜感激。谢谢!
1 回答
慕森卡
TA贡献1806条经验 获得超8个赞
解决了
所以我使用这种方法而不是scaleToWidthand scaleToHeight,它奏效了!
let scaleW = cDim.clientWidth / oImg.width;
let scaleH = cDim.clientHeight / oImg.height;
oImg.set({
opacity: 1,
scaleX: scaleW,
scaleY: scaleH,
});
添加回答
举报
0/150
提交
取消