我在HTML5画布中有一个图像背景。
var canvas = new fabric.Canvas('#canvas1');
canvas.setBackgroundImage(
'http://fabricjs.com/assets/jail_cell_bars.png',
canvas.renderAll.bind(canvas)
);
如何将我的画布尺寸(宽度,高度)设置为背景图像的尺寸?
谢谢。
我在HTML5画布中有一个图像背景。
var canvas = new fabric.Canvas('#canvas1');
canvas.setBackgroundImage(
'http://fabricjs.com/assets/jail_cell_bars.png',
canvas.renderAll.bind(canvas)
);
如何将我的画布尺寸(宽度,高度)设置为背景图像的尺寸?
谢谢。
我认为以上回答没有使用fabric.js,而是使用普通的canvas。
当你使用fabric.js及其Fabric.Canvas类时,代码应该是这样的:
image.onLoad = function() {
var fabric_canvas = new fabric.Canvas('canvas1');
fabric_canvas.setDimensions({width:image.width, height:image.height});
};
就我个人而言,
var canvas = new fabric.Canvas("test_fabric");
canvas.setDimensions({width:800, height:200});
结果为:
<canvas id="test_fabric" width="800" height="200" class="lower-canvas" style="position: absolute; width: 800px; height: 200px; left: 0px; top: 0px; -webkit-user-select: none;"></canvas>
canvas.width和canvas.style.width都被设置了。
这些同样有效!
canvas.setWidth(500);
canvas.setHeight(400);
setWidth
和 setHeight
已经被废弃,使用 .width
和 .height
进行替换。但是,虽然您可以获取这些值,但当您设置它们时,它们并没有实际作用。如果您使用 setWidth
,将会在 webpack 中出现问题。 - acarlstein#canvas1 { width: XXXpx; height: YYYpx; }
或者在 DOM 中:
<canvas id="canvas1" width="XXX" height="YYY"></canvas>
var image = new Image()
image.src = 'http://fabricjs.com/assets/jail_cell_bars.png';
image.onLoad = function () {
var canvas = document.getElementById('canvas1');
canvas.width = image.width;
canvas.height = image.height;
};
onLoad
回调函数,您将无法等待浏览器下载图像,这意味着当您尝试获取图像的宽度和高度时,您将得到0。请尝试使用一个您的浏览器尚未缓存的更大的图像,您会看到结果。 - midu