小编典典

画布绘图(如线条)模糊

html

我有一个<div style="border:1px solid border;" />和画布,使用以下方式绘制:

context.lineWidth = 1;
context.strokeStyle = "gray";

绘图看起来很模糊(lineWidth小于1会产生更差的图片),并且在div的边界附近没有任何内容。是否可以使用画布获得与HTML相同的绘图质量?

var ctx = document.getElementById("canvas").getContext("2d");

ctx.lineWidth = 1;

ctx.moveTo(2, 2);

ctx.lineTo(98, 2);

ctx.lineTo(98, 98);

ctx.lineTo(2, 98);

ctx.lineTo(2, 2);

ctx.stroke();


div {

  border: 1px solid black;

  width: 100px;

  height: 100px;

}

canvas, div {background-color: #F5F5F5;}

canvas {border: 1px solid white;display: block;}


<table>

<tr><td>Line on canvas:</td><td>1px border:</td></tr>

<tr><td><canvas id="canvas" width="100" height="100"/></td><td><div>&nbsp;</div></td></tr>

</table>

阅读 290

收藏
2020-05-10

共1个答案

小编典典

在画布上绘制线条时,实际上需要跨越像素。我认为这是API中的一个奇怪选择,但易于使用:

代替这个:

context.moveTo(10, 0);
context.lineTo(10, 30);

做这个:

context.moveTo(10.5, 0);
context.lineTo(10.5, 30);

深入了解HTML5的画布一章,就可以很好地讨论这一点(寻找“ ASK PROFESSOR MARKUP”(询问教授标记)框大约在1/4处)

2020-05-10