⊗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();

:

Практични задачи

Македонски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј