АКЦЫЯ: бясплатныя месячныя курсы па стварэнні сайтаў
на выбар: вёрстка, JavaScript, PHP, Python або фрэймворкі. Сёння апошні дзень для запісу! Націскай!
⊗jsSpCnvLn 262 of 294 menu

Рысаванне ліній праз canvas на JavaScript

Пачнем з простага - з рысавання ліній. Каб зразумець, як гэта робіцца, уявіце сабе, што ў вас ёсць папера і алоўка. Вы можаце рысаваць на гэтым лісце, а можаце не рысуючы проста перамяшчаць алоўк у патрэбную кропку.

Гэтак жа працуе і JavaScript: у яго ёсць алоўк (або пяро для рысавання), у патрэбнае месца вы можаце перамяшчаць яго з дапамогай метаду moveTo, а рысаваць - з дапамогай метаду lineTo.

Абодва метады параметрамі прымаюць кропку, у якую зрушыць кончык пяра - першым параметрам каардынату па гарызанталі, а другім - па вертыкалі. Пачатак каардынат - кропка 0, 0 - гэта верхні левы кут элемента.

Калі пяро перамяшчаецца ў патрэбную кропку - метад moveTo проста перамяшчае, а lineTo у працэсе перамяшчэння рысуе лінію ад бягучага становішча пяра да кропкі, у якое яно перамясціцца.

Аднак, калі запусціць прыведзены вышэй код - нічога не адбудзецца: неабходна напісаць яшчэ дзве каманды: першая каманда beginPath павінна быць паказана перад пачаткам рысавання лініі, а другая каманда stroke павінна быць выклікана пасля ўсіх камбінацый moveTo і lineTo для таго, каб лінія нарысавалася.

Такім чынам, давайце напішам працуючы код для рысавання лініі:

Нарысуем лінію

<canvas width="200" height="200" style="background: #f4f4f4;"></canvas> let canvas = document.querySelector('canvas'); let ctx = canvas.getContext('2d'); ctx.beginPath(); ctx.moveTo(50, 50); ctx.lineTo(150, 50); ctx.stroke();

:

Нарысуем галубок

<canvas width="200" height="200" style="background: #f4f4f4;"></canvas> let canvas = document.querySelector('canvas'); let ctx = canvas.getContext('2d'); ctx.beginPath(); ctx.moveTo(50, 50); ctx.lineTo(100, 100); ctx.lineTo(150, 50); ctx.stroke();

:

Нарысуем трохвугольнік

<canvas width="200" height="200" style="background: #f4f4f4;"></canvas> let canvas = document.querySelector('canvas'); let ctx = canvas.getContext('2d'); ctx.beginPath(); ctx.moveTo(50, 50); ctx.lineTo(100, 100); ctx.lineTo(150, 50); ctx.lineTo(50, 50); ctx.stroke();

:

Нарысуем квадрацік

<canvas width="200" height="200" style="background: #f4f4f4;"></canvas> let canvas = document.querySelector('canvas'); let ctx = canvas.getContext('2d'); ctx.beginPath(); ctx.moveTo(50, 50); ctx.lineTo(150, 50); ctx.lineTo(150, 150); ctx.lineTo(50, 150); ctx.closePath(); ctx.stroke();

:

Замыканне фігур

Для рысавання замкнёнай фігуры не абавязкова рабіць усе лініі - апошняя лінія можа нарысавацца аўтаматычна і замкнуць фігуру. Для гэтага перад метадам stroke варта выклікаць метад closePath.

Гэты метад спрабуе зачыніць фігуру, рысуючы прамую лінію з канчатковай кропкі ў пачатковую. Калі фігура была ўжо закрыта ці з'яўляецца проста кропкай, то метад нічога не робіць.

Давайце нарысуем трохвугольнік, выкарыстоўваючы closePath:

<canvas width="200" height="200" style="background: #f4f4f4;"></canvas> let canvas = document.querySelector('canvas'); let ctx = canvas.getContext('2d'); ctx.beginPath(); ctx.moveTo(50, 50); ctx.lineTo(100, 100); ctx.lineTo(150, 50); //ctx.lineTo(50, 50); - гэты крок апускаем ctx.closePath(); ctx.stroke();

:

Закрашванне фігур

Замест метаду stroke можна выкарыстоўваць метад fill - пры гэтым фігура не абавязкова павінна быць цалкам закрытай - яна зафарбуецца і так:

<canvas width="200" height="200" style="background: #f4f4f4;"></canvas> let canvas = document.querySelector('canvas'); let ctx = canvas.getContext('2d'); ctx.beginPath(); ctx.moveTo(50, 50); ctx.lineTo(100, 100); ctx.lineTo(150, 50); //ctx.lineTo(50, 50); - гэты крок апускаем //ctx.closePath(); - і гэты таксама ctx.fill();

:

Практычныя задачы

byenru