-2
請幫忙弄清爲什麼這不起作用。 drawTest函數(顯示爲概念證明)可用,但不是drawGrid函數。我究竟做錯了什麼?畫布Javascript:gridDraw(ctx)功能不工作不會在Chrome上產生錯誤
'use strict';
window.onload = init;
function init() {
let can = document.getElementById('canvas');
let ctx = can.getContext('2d');
drawTest(ctx);
drawGrid(ctx);
}
function drawTest(ctx) {
ctx.fillStyle = 'rgb(200, 0, 0)';
ctx.fillRect(10, 10, 50, 50);
ctx.fillStyle = 'rgba(0, 0, 200, 0.5)';
ctx.fillRect(30, 30, 50, 50);
}
function drawGrid(ctx, elSize = 10, width = .3, color = 'green') {
ctx.lineWidth = width;
ctx.stroke.style = color;
var lineX = ctx.width/elSize - 1;
var lineY = ctx.height/elSize - 1;
for (var i = 1; i <= lineX; i++) {
ctx.beginPath();
ctx.moveTo(elSize * i, 0);
ctx.lineTo(elSize * i, ctx.height);
ctx.stroke();
}
for (var i = 1; i <= lineY; i++) {
ctx.beginPath();
ctx.moveTo(0, elSize * i);
ctx.lineTo(ctx.width, elSize * i);
ctx.stroke();
}
}
謝謝you.it工作!但是,我應該如何正確地使用javascript OOP將長度和寬度附加到ctx對象中?例如,我應該創建一個函數返回一個對象的屬性設置?你能用帆布的例子展示我嗎? –
畫布寬度和高度屬性是描述畫布中像素的標準屬性,因此,如示例中所示訪問這些寬度和高度屬性是完全可以接受的。請注意,畫布*樣式*寬度和高度屬性可能會使畫布看起來比canvas.width/canvas.height屬性更大或更小。樣式和畫布屬性之間的差異將創建一個看起來拉伸或濃縮的可視化。 –