HTML5 Canvas с увеличенным полем

1

Я играю с HTML5 Canvas и Javascript и нахожу интересную логику рисования линий. Возможно ты можешь помочь мне.

Я хочу рисовать линии с увеличенной шириной, но когда ширина слишком широка для поля и пары линий становятся едиными, я хочу добавить некоторый запас 1px. Это происходит после того, как я становится 14

function draw5() {
  var ctx = document.getElementById('tutorial').getContext('2d');
  var increaseHorizontal = 0;
  for(var i = 0; i < 17; i++) {
    var lineWidthVar = 1 + i;
    if(i >= 14){
      increaseHorizontal += 1;
    }
    ctx.lineWidth = lineWidthVar;
    ctx.beginPath();
    ctx.moveTo(5 + i * (14 + increaseHorizontal), 5);
    ctx.lineTo(5 + i * (14 + increaseHorizontal), 140);
    ctx.stroke();
  }
}

draw5();

После того, как я добавлю переменную роста. Горизонтальная переменная, которая составляет 1,2,3, рисунок линии получает дополнительные пиксели по оси x, после 14-й строки, вот как выглядит:

Изображение 174551

Кажется странным, потому что, когда я жестко кодирую 15 вместо (14 + увеличение по горизонтали), рисунок выглядит лучше для 15-й линии, но с общим увеличенным значением оси х по всем линиям.

Я надеюсь, что это ясно, что я говорю, и я надеюсь, что это всего лишь небольшая ошибка, о которой я не думаю.

Вот пример всего кода:

function draw5() {
        var ctx = document.getElementById('tutorial').getContext('2d');
        var increaseHorizontal = 0;
        for(var i = 0; i < 17; i++) {
          var lineWidthVar = 1 + i;
          if(i >= 14){
            increaseHorizontal += 1;
          }
          ctx.lineWidth = lineWidthVar;
          ctx.beginPath();
          ctx.moveTo(5 + i * (14 + increaseHorizontal), 5);
          ctx.lineTo(5 + i * (14 + increaseHorizontal), 140);
          ctx.stroke();
        }
      }

      draw5();
canvas {
        border: 2px solid #000;
      }
<canvas id="tutorial" width="300" height="150"></canvas>

Ссылка на jsfiddle

Теги:
canvas

1 ответ

1
Лучший ответ

Вы можете отслеживать новую стартовую позицию и использовать ее.

function draw5() {
  var ctx = document.getElementById('tutorial').getContext('2d');
  var startPosition = 0;
  var spacer = 5;
  for (var i = 0; i < 17; i++) {
    var lineWidthVar = 1 + i;
    startPosition = startPosition + lineWidthVar + spacer;

    ctx.lineWidth = lineWidthVar;
    ctx.beginPath();
    ctx.moveTo(startPosition, 5);
    ctx.lineTo(startPosition, 140);
    ctx.stroke();
  }
}

draw5();
canvas {
  border: 2px solid #000;
}
<canvas id="tutorial" width="300" height="150"></canvas>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню