Это связано с тем, что линии рисуются над всеми пикселями, над которыми они находятся (позиционирование по холсту находится в поплавке). Когда вы хотите нарисовать точную вертикальную или горизонтальную линию в javascript на холсте, вам лучше иметь их в полтора раза.
См. Иллюстрацию: первая горизонтальная линия была нарисована с y-позицией 1. Эта линия нечеткая и широкая. Вторая горизонтальная линия была нарисована с y-позицией 4,5. Он тонкий и точный.
Например, в коде, у меня были хорошие результаты, изменив горизонтальный контур линии к этому:
// Horizontal lines
for (var i = 1; i < objCanvas.height/intGridWidth; i++)
{
objContext.strokeStyle = "white";
var y = Math.floor(i*intGridWidth)+0.5
objContext.moveTo(0, y);
objContext.lineTo(objCanvas.width, y);
objContext.stroke();
}
Вот скрипка демонстрирует его с очень тонкими и чистыми линиями:
http://jsfiddle.net/dystroy/7NJ6w/
Тот факт, что линия нарисована над всеми пикселями, с которой она закончилась, означает единственный способ d необработанная горизонтальная линия с шириной ровно одного пикселя предназначена для ориентации на середину. Я, как правило, этот вид UTIL функций в моих приложениях, основанных на холсте:
function drawThinHorizontalLine(c, x1, x2, y) {
c.lineWidth = 1;
var adaptedY = Math.floor(y)+0.5;
c.beginPath();
c.moveTo(x1, adaptedY);
c.lineTo(x2, adaptedY);
c.stroke();
}
Конечно, вы бы лучше сделать это для вертикальных линий тоже имеет хорошую выглядящую страницу.
Я сделал схему, чтобы сделать ее более ясной: http://canop.org/blog/?p=220 –
Удивительный! Это потрясающе. Большое спасибо, и жаль, что не ответил раньше. – hoylemd