⊗jsSpCnvLn 262 of 294 menu

Tegning af linjer via canvas i JavaScript

Lad os starte enkelt - med at tegne linjer. For at forstå, hvordan det gøres, forestil dig, at du har et stykke papir og en blyant. Du kan tegne på dette stykke papir, eller du kan uden at tegne blot flytte blyanten til det ønskede punkt.

JavaScript fungerer på samme måde: den har en blyant (eller en pen til tegning), til det ønskede sted kan du flytte den ved hjælp af metoden moveTo, og tegne - ved hjælp af metoden lineTo.

Begge metoder tager som parametre et punkt, som pen-spidsen skal flyttes til - første parameter er koordinaten vandret, og den anden - lodret. Koordinatoprindelsen - punktet 0, 0 - er elementets øverste venstre hjørne.

Når pennen flyttes til det ønskede punkt - flytter metoden moveTo blot, mens lineTo under flytningen tegner en linje fra pennens nuværende position til punktet, som den flyttes til.

Men hvis man kører koden ovenfor - vil der ikke ske noget: det er nødvendigt at skrive yderligere to kommandoer: den første kommando beginPath skal angives før starten af linjetegningen, og den anden kommando stroke skal kaldes efter alle kombinationer af moveTo og lineTo for at linjen bliver tegnet.

Så lad os skrive arbejdende kode til at tegne en linje:

Lad os tegne en linje

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

:

Lad os tegne et fugleudseende

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

:

Lad os tegne en trekant

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

:

Lad os tegne en firkant

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

:

Lukning af figurer

For at tegne en lukket figur er det ikke nødvendigt at lave alle linjer - den sidste linje kan tegnes automatisk og lukke figuren. For at gøre dette, skal metoden closePath kaldes før metoden stroke.

Denne metode forsøger at lukke figuren ved at tegne en lige linje fra slutpunktet til startpunktet. Hvis figuren allerede var lukket eller er blot et punkt, så gør metoden intet.

Lad os tegne en trekant ved hjælp af 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); - dette trin udelades ctx.closePath(); ctx.stroke();

:

Udfyldning af figurer

I stedet for metoden stroke kan man bruge metoden fill - her behøver figuren ikke nødvendigvis at være fuldstændig lukket - den vil blive udfyldt alligevel:

<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); - dette trin udelades //ctx.closePath(); - og denne også ctx.fill();

:

Praktiske opgaver

Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis