⊗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šuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა