⊗jsSpCnvLn 262 of 294 menu

Lijnen tekenen via canvas in JavaScript

Laten we beginnen met iets simpels - het tekenen van lijnen. Om te begrijpen hoe dit werkt, stel je voor dat je een vel papier en een potlood hebt. Je kan op dit vel tekenen, of zonder te tekenen gewoon het potlood naar het gewenste punt verplaatsen.

JavaScript werkt op dezelfde manier: het heeft een potlood (of een pen om mee te tekenen), naar de gewenste plek kun je het verplaatsen met behulp van de methode moveTo, en tekenen - met behulp van de methode lineTo.

Beide methoden accepteren als parameters een punt waarheen de punt van de pen moet worden verplaatst - de eerste parameter is de horizontale coördinaat, en de tweede - de verticale. De oorsprong van het coördinatenstelsel - punt 0, 0 - is de linkerbovenhoek van het element.

Wanneer de pen naar het gewenste punt wordt verplaatst - verplaatst de methode moveTo alleen, terwijl lineTo tijdens het verplaatsen een lijn tekent van de huidige positie van de pen naar het punt waar het naartoe wordt verplaatst.

Als je echter de bovenstaande code uitvoert - gebeurt er niets: het is noodzakelijk om nog twee commando's te schrijven: het eerste commando beginPath moet worden gespecificeerd voordat met het tekenen van de lijn wordt begonnen, en het tweede commando stroke moet worden aangeroepen na alle combinaties van moveTo en lineTo om de lijn daadwerkelijk te tekenen.

Laten we dus een werkende code schrijven om een lijn te tekenen:

Laten we een lijn tekenen

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

:

Laten we een vogeltje tekenen

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

:

Laten we een driehoek tekenen

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

:

Laten we een vierkantje tekenen

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

:

Vormen sluiten

Voor het tekenen van een gesloten vorm is het niet noodzakelijk om alle lijnen te maken - de laatste lijn kan automatisch worden getekend en de vorm sluiten. Hiervoor moet voor de methode stroke de methode closePath worden aangeroepen.

Deze methode probeert de vorm te sluiten door een rechte lijn te tekenen van het eindpunt naar het beginpunt. Als de vorm al gesloten was of slechts een enkel punt is, dan doet de methode niets.

Laten we een driehoek tekenen met behulp van 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); - deze stap slaan we over ctx.closePath(); ctx.stroke();

:

Vormen inkleuren

In plaats van de methode stroke kan men de methode fill gebruiken - hierbij hoeft de vorm niet per se volledig gesloten te zijn - ze zal toch worden ingekleurd:

<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); - deze stap slaan we over //ctx.closePath(); - en deze ook ctx.fill();

:

Praktische opdrachten

Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren