Answers:
的canvas
DOM元素具有.height
和.width
对应的属性的height="…"
和width="…"
属性。在JavaScript代码中将它们设置为数值,以调整画布的大小。例如:
var canvas = document.getElementsByTagName('canvas')[0];
canvas.width = 800;
canvas.height = 600;
请注意,这会清除画布,尽管您应该遵循此操作ctx.clearRect( 0, 0, ctx.canvas.width, ctx.canvas.height);
来处理那些不能完全清除画布的浏览器。您需要重新绘制尺寸更改后想要显示的所有内容。
进一步注意的是,高度和宽度是用于绘制逻辑帆布尺寸和是不同的距离style.height
和style.width
CSS属性。如果您未设置CSS属性,则画布的固有大小将用作其显示大小;如果您确实设置了CSS属性,并且它们与画布尺寸不同,则将在浏览器中缩放内容。例如:
// Make a canvas that has a blurry pixelated zoom-in
// with each canvas pixel drawn showing as roughly 2x2 on screen
canvas.width = 400;
canvas.height = 300;
canvas.style.width = '800px';
canvas.style.height = '600px';
画布具有2种尺寸,即画布中像素的尺寸(它的后备存储区或drawingBuffer)以及显示尺寸。像素数是使用canvas属性设置的。在HTML中
<canvas width="400" height="300"></canvas>
或用JavaScript
someCanvasElement.width = 400;
someCanvasElement.height = 300;
与此不同的是画布的CSS样式的宽度和高度
在CSS中
canvas { /* or some other selector */
width: 500px;
height: 400px;
}
或用JavaScript
canvas.style.width = "500px";
canvas.style.height = "400px";
可以将画布制作为1x1像素的最佳方法是始终使用CSS选择尺寸,然后编写少量JavaScript以使像素数量与该尺寸匹配。
function resizeCanvasToDisplaySize(canvas) {
// look up the size the canvas is being displayed
const width = canvas.clientWidth;
const height = canvas.clientHeight;
// If it's resolution does not match change it
if (canvas.width !== width || canvas.height !== height) {
canvas.width = width;
canvas.height = height;
return true;
}
return false;
}
为什么这是最好的方法?因为它在大多数情况下都可以工作,而无需更改任何代码。
因为我没有设置属性,所以每个示例中唯一更改的是CSS(就画布而言)
笔记:
$('#mycanvas').attr({width:400,height:300}).css({width:'800px',height:'600px'});
如果要使视觉尺寸与像素尺寸相同,则不要设置样式,而只能设置属性。