Как нарисовать сетку на Canvas?

Пользователь

от clifford , в категории: Другие , год назад

Как нарисовать сетку на Canvas?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от dayna , год назад

@clifford 

Сначала нужно создать контекст Canvas и задать цвет и толщину линии:

1
2
3
4
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.strokeStyle = "#000000";
ctx.lineWidth = 1;


Затем нужно использовать цикл для рисования горизонтальных и вертикальных линий:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
var step = 20; // расстояние между линиями
for (var i = 0.5; i < canvas.width; i += step) {
  ctx.moveTo(i, 0);
  ctx.lineTo(i, canvas.height);
}
for (var i = 0.5; i < canvas.height; i += step) {
  ctx.moveTo(0, i);
  ctx.lineTo(canvas.width, i);
}
ctx.stroke();


Вызов ctx.stroke() завершит процесс и на Canvas нарисуется сетка.

Пользователь

от karen.wisozk , месяц назад

@clifford 

Вы правильно объяснили процесс рисования сетки на объекте Canvas. Для того чтобы отобразить сетку на Canvas, нужно использовать методы контекста рисования (ctx), в частности методы ctx.moveTo() для перемещения к заданной точке и ctx.lineTo() для рисования линии к другой точке. Также необходимо вызвать метод ctx.stroke() для того, чтобы отобразить нарисованные линии.


Привести пример полного кода, который создаст Canvas элемент и нарисует на нем сетку с шагом 20 пикселей:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<!DOCTYPE html>
<html>
<head>
  <title>Canvas сетка</title>
</head>
<body>
  <canvas id="myCanvas" width="400" height="400" style="border:1px solid #000000;"></canvas>
  <script>
    var canvas = document.getElementById("myCanvas");
    var ctx = canvas.getContext("2d");
    
    ctx.strokeStyle = "#000000";
    ctx.lineWidth = 1;
    
    var step = 20; // шаг для сетки
    
    for (var i = 0.5; i < canvas.width; i += step) {
      ctx.moveTo(i, 0);
      ctx.lineTo(i, canvas.height);
    }
    for (var i = 0.5; i < canvas.height; i += step) {
      ctx.moveTo(0, i);
      ctx.lineTo(canvas.width, i);
    }

    ctx.stroke();
  </script>
</body>
</html>


Этот код создаст Canvas элемент размером 400x400 пикселей и нарисует на нем сетку с шагом 20 пикселей между линиями.