我在HTML页面中的div中有一个画布元素。我已经通过CSS将它的宽度和高度设置为父div的100%,并且它将它们设置正确。 我定义了一个“绘图”函数,并且我使用它:<body onload="draw();">
。而它的实现是这样的:HTML画布尺寸是正确的,但上下文使用默认的尺寸
function draw() {
var cm = 6; // canvas margin
var canvases = document.getElementsByClassName('container');
for (var i=0; i<canvases.length; i++) {
var c = canvases[i];
var w = c.offsetWidth;
var h = c.offsetHeight;
console.log('w: ' + w + '; h: ' + h);
var ctx = c.getContext("2d");
ctx.beginPath();
ctx.lineWidth = 2;
ctx.strokeStyle = '#561a04';
ctx.moveTo(cm, cm);
ctx.lineTo(w-cm, cm);
ctx.lineTo(w-cm, h-cm);
ctx.lineTo(cm, h-cm);
ctx.lineTo(cm, cm);
ctx.stroke();
}
}
现在:控制台打印画布(特别是381和188)的宽度和高度的真实和正确的价值观;但似乎上下文绘制就好像画布是其默认维度......事实上,如果我简单地设置w = 330; h = 150;
它按预期工作,但画布拉伸绘图,我不满意的结果。
我能做些什么来使上下文使用正确的尺寸?我想在每次画布大小调整时重新绘制图像,但我相信任何div的大小都没有变化,对吗?
谢谢。
显示画布的HTML也是如此。 –
使用CSS设置宽度和高度会更改元素的宽度和高度,而不是上下文的宽度和高度。用'c.width'和'c.height'设置上下文。 –
我怀疑你遇到了这个问题:http://stackoverflow.com/questions/34250356/dimensions-of-a-canvas/34250408 –