javascript - HTML5 Canvas 方格图案

标签 javascript canvas html5-canvas

我正在尝试创建复古像素化背景画。 “像素”的 x 和 y 位置相应地是奇数和偶数。这似乎适用于 4 的分辨率(res 变量),然后 % 运算符似乎不起作用。

function drawPixelatedBackground()
{
    var res = 5;

    for (var x=0; x<settings.width/res;x++ )
    { 
        for (var y=0;y<settings.height/res;y++)
        {
            if ( (x%2==0) && (y%2==0) )
            {
                nx = x * (settings.width/res);
                ny = y * (settings.width/res);
                ctx.fillStyle= settings.colors.Fill;
                ctx.fillRect(nx,ny, nx+  (settings.width/res),ny+   (settings.height/res) );
            }

        }
    }
}

最佳答案

你的逻辑有点问题。我将在下面解释我的。

http://jsfiddle.net/2eee9moq/2/

function drawCheckeredBackground(can, nRow, nCol) {
    var ctx = can.getContext("2d");
    var w = can.width;
    var h = can.height;

    nRow = nRow || 8;    // default number of rows
    nCol = nCol || 8;    // default number of columns

    w /= nCol;            // width of a block
    h /= nRow;            // height of a block

    for (var i = 0; i < nRow; ++i) {
        for (var j = 0, col = nCol / 2; j < col; ++j) {
            ctx.rect(2 * j * w + (i % 2 ? 0 : w), i * h, w, h);
        }
    }

    ctx.fill();
}

var canvas = document.getElementById("canvas");

drawCheckeredBackground(canvas);
<canvas id="canvas" width="300" height="300"></canvas>

  • 嵌套的for 循环将 block 绘制成一行。
    • 2 * j * w + (i % 2 ? 0 : w) 每隔一行移动每个 block 的 x 坐标。

关于javascript - HTML5 Canvas 方格图案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27666936/

相关文章:

javascript - 在 Github 页面上使用 Slick 更改箭头的颜色

canvas - 如何在长列表选择器中设置数据模板的 z 索引

javascript - 将图像保存到本地存储 - Canvas

javascript - 为什么对象的值在函数调用中被捕获?

javascript - 为什么我的属性在装饰器中的 Object.defineProperty 之后消失了?

javascript - 如何使用 Protractor 获取浏览器 API 调用?

javascript - Canvas 不随页面滚动

javascript - p5.j​​s 相对于 Canvas 的输入位置

javascript - 如何在 WebGL 中沿 x 轴移动纹理?

HTML5 canvas drawImage() 不会在 Firefox 上绘制大图像