注意:这与如何做时按比例放大现有画布元素呈现,不与线或图形如何被渲染做到画布表面。换句话说,这与缩放元素的插值有关,与在画布上绘制的图形的抗锯齿无关。我不关心浏览器如何画线;我关心浏览器在放大时如何呈现画布元素本身。
是否有画布属性或浏览器设置我可以在缩放<canvas>
元素时以编程方式更改以禁用插值?跨浏览器解决方案是理想的,但不是必需的;基于 Webkit 的浏览器是我的主要目标。性能非常重要。
这个问题最相似,但没有充分说明问题。对于它的value,我试图image-rendering: -webkit-optimize-contrast
无济于事。
该应用程序将是一个用 HTML5+JS 编写的“复古”8 位风格的游戏,以明确我需要什么。
为了说明,这里有一个例子。(现场版)
假设我有一个 21x21 的画布...
<canvas id='b' width='21' height='21'></canvas>
...具有使元素大 5 倍 (105x105) 的 css:
canvas { border: 5px solid #ddd; }
canvas#b { width: 105px; height: 105px; } /* 5 * 21 = 105 */
我在画布上画了一个简单的“X”,如下所示:
$('canvas').each(function () {
var ctx = this.getContext("2d");
ctx.moveTo(0,0);
ctx.lineTo(21,21);
ctx.moveTo(0,21);
ctx.lineTo(21,0);
ctx.stroke();
});
左边的图像是 Chromium (14.0) 渲染的。右边的图像是我想要的(手绘用于说明目的)。