gpt4 book ai didi

javascript - 在 Canvas HTML5 中循环网格并在方 block 之间使用 "gaps"?

转载 作者:行者123 更新时间:2023-11-28 20:29:24 24 4
gpt4 key购买 nike

我想创建 5x5 网格,其中包含 40x40px 的正方形,它们之间的间隙为 4px,这是一张图片:

/image/hu96a.png

所以我打算做这样的事情:

$(document).ready(function(){
var ctx = document.getElementById('grid').getContext('2d');
for (var y = 0; y < 5; y++) {
for (var x = 0; x < 5; x++) {
ctx.fillStyle = "rgb(200,0,0)";
ctx.fillRect ((40*y)+4*(y+1),(40*x)+4*(x+1),40*(y+1)+4*(y+1),40*(x+1)+4*(x+1));
};
};
});

但是它不起作用,我想有一个更简单的方法可以做到这一点,但我只是不知道如何!我怎样才能达到预期的结果?

谢谢!

最佳答案

See the Fiddle ,

和代码:

$(document).ready(function(){
var ctx = document.getElementById('grid').getContext('2d');
ctx.fillStyle = "rgb(200,0,0)";
ctx.beginPath();
for (var x = 0, i = 0; i < 5; x+=44, i++) {
for (var y = 0, j = 0; j < 5; y+=44, j++) {
ctx.rect (x, y, 40, 40);
}
}
ctx.fill();
ctx.closePath();
});

另一种方式:

$(document).ready(function(){
var ctx = document.getElementById('grid').getContext('2d');
ctx.fillStyle = "rgb(200,0,0)";
for (var x = 0, i = 0; i < 5; x+=44, i++) {
for (var y = 0, j = 0; j < 5; y+=44, j++) {
ctx.fillRect (x, y, 40, 40);
}
}
});

在这两种情况下,我都从 for block 中删除了 ctx.fillStyle 以提高性能,因为 Canvas 状态机的更改会减慢绘制过程。

编辑:

正如评论中markE所指出的,您也可以使用以下方法:

$(document).ready(function(){
var ctx = document.getElementById('grid').getContext('2d');
var size = 40;
var offset = 4;

ctx.fillStyle = "rgb(200,0,0)";
for (var x = 0; x < 5; x++) {
for (var y = 0; y < 5; y++) {
ctx.fillRect (x*(size+offset), y*(size+offset), size, size);
}
}
});

这只是个人风格的问题!

关于javascript - 在 Canvas HTML5 中循环网格并在方 block 之间使用 "gaps"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16726539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com