我似乎无法弄清楚如何在 html5 画布上缩放像素。这就是我到目前为止的位置。
function draw_rect(data, n, sizex, sizey, color, pitch) {
var c = Color2RGB(color);
for( var y = 0; y < sizey; y++) {
var nn = n * 4 * sizex;
for( var x = 0; x < sizex; x++) {
data[nn++] = c[0];
data[nn++] = c[1];
data[nn++] = c[2];
data[nn++] = 0xff;
}
n = n + pitch;;
}
}
function buffer_blit(buffer, width, height) {
var c_canvas = document.getElementById("canvas1");
var context = c_canvas.getContext("2d");
context.scale(2, 2);
var imageData = context.getImageData(0, 0, context.canvas.width, context.canvas.height);
var n = width * height - 1;
while((n--)>=0) draw_rect(imageData.data, n, pixel, pixel, buffer[n], width);
context.putImageData(imageData, 0, 0);
}
编辑:我在这里更新了代码。不确定发生了什么变化。
也许一些图像会有所帮助。第一个图像的像素大小为 1,第二个像素大小为 2。请注意,图像会加倍并且仅填充画布的一半。
Edit2:我制作了一个网页,至少显示了我正在经历的一种奇怪行为。