【发布时间】:2017-07-24 03:09:23
【问题描述】:
我使用 canvas 元素制作了一个非常简单的矩形。但是,如果 fillRect(x, y, width, height) 中 x 和 y 的参数是 0 和 0 以外的任何值,则所有边缘在放大和/或在移动设备上看起来完全模糊。如果 x 和 y 是 0 和 0,则矩形的顶部和左侧边缘是超定义的,即使放大也是如此,而底部和右侧边缘是模糊的。我正在使用 Chrome/Firefox 的 1920x1080 屏幕以及使用 Safari 的 750x1334 移动屏幕上渲染它。
这在 100% 缩放时在桌面上不是问题,但在移动设备上看起来很糟糕。如果您在 Chrome 和 Firefox 以及 JSFiddle 上完全放大,您可以清楚地看到模糊的边缘。我没有使用 CSS 调整画布上的宽度和高度。它是使用画布属性和/或 JS 完成的。下面是我用来在浏览器上测试的 HTML。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
</head>
<body>
<canvas id="gameCanvas" width="150" height="150">A game.</canvas>
<script>
var canvas = document.getElementById("gameCanvas");
var ctx = canvas.getContext("2d");
ctx.fillRect(0, 0, 100, 100);
</script>
</body>
</html>
编辑:我不是想画一条 1 像素的线。我也尝试过半像素值,但它使模糊的边缘变得更糟。
前两个屏幕截图来自 Safari 上的 iPhone 7 屏幕,分别为非缩放和缩放。最后一张屏幕截图是在 1920x1080 笔记本电脑屏幕上,在 Chrome 上放大。
【问题讨论】:
-
我尝试使用半像素值进行试验,但这只会让它们变得更糟。而且我不是在画一条 1 像素的线,而是在画矩形。
-
没有。不是同一个修复。我逐字逐句地尝试了它,虽然调整后的效果看起来好多了,但它的边缘仍然有些模糊。和我现在一样。
-
你尝试了所有的答案?这是令人难以置信的快速编码!
标签: javascript html canvas responsive-design