【发布时间】:2016-08-13 15:13:15
【问题描述】:
我想用putImageData 在画布上作画。但由于某种原因,绘制的像素模糊,我不知道为什么。这是一个最小的例子:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<style>
html, body, canvas { width: 100%; height: 100%; margin: 0; padding: 0; overflow: hidden; }
</style>
</head>
<body oncontextmenu="return false;">
<canvas id='canvas'></canvas>
<script type='text/javascript'>
let canvas = document.getElementById('canvas');
let ctx = canvas.getContext("2d");
ctx.imageSmoothingEnabled = false;
ctx.mozImageSmoothingEnabled = false;
ctx.webkitImageSmoothingEnabled = false;
ctx.msImageSmoothingEnabled = false;
let uarr = new Uint8ClampedArray(4);
uarr[0] = 0;
uarr[1] = 0;
uarr[2] = 0;
uarr[3] = 255;
let imgData = new ImageData(uarr , 1, 1);
ctx.putImageData(imgData, 20, 20);
</script>
</body>
</html>
这应该在20,20 坐标处绘制一个黑色像素,但由于某种原因它看起来很模糊。
如何强制绘制锐边?
【问题讨论】:
-
似乎并非所有浏览器都支持这一点。 Safari 似乎是个顽固分子。你用的是什么浏览器?
-
在 chrome 和 Safari 中检查
-
哦等等。试试
canvas.width = window.innerWidtht和canvas.height = window.innerHeight。您目前正在使用 CSS 将标准尺寸的画布拉伸到屏幕大小,但这不是画布的工作原理,它更像是具有可拉伸的预定义尺寸的图像。 -
我现在感觉有点傻,哈哈。我以前使用过画布,不知道我怎么会错过。
-
哈没问题,当它直视你的脸时,你仍然看不到它。事后看来很明显。
标签: javascript canvas