У меня есть проблема с номером <canvas>
, в которой этот сегмент моего кода, который рисует музыкальные ноты на холсте, всегда делает последнюю линию ярче и почти исчезает, независимо от того, что используется браузер.Последняя строка, нарисованная в javascript, не похожа на остальные
window.onload = draw;
function draw() {
var canvas = document.getElementById('sheetmusic');
var c = canvas.getContext('2d');
var whitespace = 0; // pixel space between staves
var ycoordinate = 10; // y-plot of beginning of each staff
//draw the staves 'x' number of times requested
for (var x = 1; x <= 10; x++) {
// draw the staff
for (var i = 1; i <= 5; i++){
c.strokeStyle = 'black';
c.moveTo(0,ycoordinate);
c.lineTo(canvas.width,ycoordinate);
c.stroke();
ycoordinate = ycoordinate + 10;
}
//draw white space beneath each staff
c.fillStyle = 'white';
c.fillRect(0,whitespace + 52,canvas.width,45);
whitespace = whitespace + 100;
ycoordinate = ycoordinate + 50;
}
}
Решения у меня есть, так как я использовал цикл, чтобы рисовать линии, чтобы перерисовывать каждую строку один раз, когда на самом деле все, что мне действительно нужно это сделать самую последнюю строчку еще раз.
window.onload = draw;
function draw() {
var canvas = document.getElementById('sheetmusic');
var c = canvas.getContext('2d');
var whitespace = 0; // pixel space between staves
var ycoordinate = 10; // y-plot of beginning of each staff
//draw the staves 'x' number of times requested
for (var x = 1; x <= 10; x++) {
// draw the staff
for (var i = 1; i <= 5; i++){
c.strokeStyle = 'black';
c.moveTo(0,ycoordinate);
c.lineTo(canvas.width,ycoordinate);
c.stroke();
// this code repeats to alleviate bug with last drawn line not being defined enough
c.moveTo(0,ycoordinate);
c.lineTo(canvas.width,ycoordinate);
c.stroke();
ycoordinate = ycoordinate + 10;
}
//draw white space beneath each staff
c.fillStyle = 'white';
c.fillRect(0,whitespace + 52,canvas.width,45);
whitespace = whitespace + 100;
ycoordinate = ycoordinate + 50;
}
}
Любые идеи о том, как перекроить последнюю строку еще раз?
Имейте в виду, что, когда будет реализована остальная часть этого веб-приложения, переменная x
должна быть изменена с помощью опции clicked, поэтому количество столов должно быть как можно меньше или при необходимости.
Спасибо, Prasath K, ваш пример Скрипки является то, что я наконец-то понял. Насколько я могу судить, это всего лишь ошибка в сообществе? Пришлось изменить мою координату y на .5, чтобы, наконец, получить четкие строки и добавить свойство lineWidth со значением 1. – 2013-05-01 07:07:06