Canvas je výkonný nástroj pro tvorbu grafiky webové stránky. Zároveň může Čištění prvku Canvas některým vývojářům způsobit potíže. V tomto článku se podíváme na několik jednoduchých a účinných způsobů čištění Canvas, které vám pomohou dosáhnout požadovaného výsledku bez zbytečných potíží.
Prvním způsobem je použití metody clearRect (). Tato metoda čistí danou oblast Canvas definovanou dvěma páry souřadnic – horní-levou (x, y) a spodní-pravou (x, y). Chcete-li například vyčistit celý Canvas, můžete nastavit souřadnice (0, 0) a (Canvas.width, Canvas.height).
Druhým způsobem je použití vlastnosti width. Hodnotu této vlastnosti můžeme nastavit tak, aby byla rovná sobě, abychom vyčistili celý Canvas. Tímto způsobem budou odstraněny všechny grafické prvky, které na něm byly nakresleny. Velikost Canvas však zůstane zachována.
Třetím způsobem je použití metody toDataURL (). Při volání této metody se vrátí řetězec reprezentující obsah Canvas jako obrázek ve formátu data URL. Poté můžeme nastavit hodnotu vlastnosti src obrázku, která se rovná výsledné hodnotě. To povede k úplnému vyčištění Canvas a také aktualizuje rozměry prvku.
Jak odstranit obsah canvas-efektivní metody
Chcete-li odstranit obsah canvas a vyčistit jej pro další použití, existuje několik účinných metod.
-
Metoda clearRect(): Tato metoda umožňuje odstranit obsah canvas zadáním souřadnic a šířky / výšky oblasti pro čištění. Například:
const canvas = document.getElementById('myCanvas');const ctx = canvas.getContext('2d');ctx.clearRect(0, 0, canvas.width, canvas.height);
const canvas = document.getElementById('myCanvas');const ctx = canvas.getContext('2d');ctx.fillStyle = 'white';ctx.fillRect(0, 0, canvas.width, canvas.height);
const canvas = document.getElementById('myCanvas');const ctx = canvas.getContext('2d');const buffer = document.createElement('canvas');buffer.width = canvas.width;buffer.height = canvas.height;const bufferCtx = buffer.getContext('2d');bufferCtx.clearRect(0, 0, buffer.width, buffer.height);ctx.drawImage(buffer, 0, 0);
Vyberte správnou metodu pro svůj úkol a snadno odstraňte obsah canvas!
Použití metody clearRect ()
Syntaxe použití metody clearRect() je následující:
| Metoda | Parametry | Popis |
|---|---|---|
| clearRect() | x , y , width , height | Odstraní fragment plátna, počínaje souřadnicemi (x, y) a má šířku a výšku height . |
K úplnému vyčištění plátna lze například použít následující kód:
const canvas = document.getElementById('canvas');const ctx = canvas.getContext('2d');ctx.clearRect(0, 0, canvas.width, canvas.height);
V tomto příkladu používáme metodu clearRect () se souřadnicemi (0, 0), které označují levý horní roh plátna. Šířka a výška jsou přitom nastaveny tak, aby odpovídaly současným rozměrům plátna (odvozeno z vlastností canvas.width a canvas.height ).
Metoda clearRect () se tedy snadno používá a umožňuje vyčistit plátno od jakéhokoli obsahu, takže je připraveno k malování nových prvků.
Čištění canvas změnou šířky a výšky
K tomu je nutné přistupovat k prvku canvas pomocí JavaScriptu. Pak můžete použít vlastnost canvas.width pro změnu šířky a canvas.height - pro změnu výšky.
Po nastavení nových hodnot bude položka canvas vyčištěna a připravena k použití. Všechny na něm nakreslené tvary a obrázky budou odstraněny.
Například následující kód JavaScriptu umožňuje vymazat canvas nastavením nové šířky a výšky na 0 Pixelů:
const canvas = document.getElementById('canvas');
canvas.width = 0;
canvas.height = 0;
Tento kód objímá velikosti canvas a odstraní všechny prvky, které na něm byly nakresleny.
Čištění canvas změnou šířky a výšky je jednoduchý a efektivní způsob, který lze použít k vytvoření čistého a prázdného canvas před malováním nových objektů.
Použití metody clear () k čištění canvas
Použití metody clear() je poměrně jednoduché. Pro začátek je nutné získat kontext plátna pomocí metody getcontext (). Dále, vyvolat metodu clear () pro tento kontext:
const canvas = document.getElementById('myCanvas');const context = canvas.getContext('2d');context.clear();
Metoda clear () bez parametrů vyčistí celý canvas odstraněním všech objektů a návratem plátna do počátečního stavu. V důsledku toho vše, co bylo nakresleno na canvas, zmizí.
Je také možné použít metodu clear() k částečnému čištění canvas. Chcete-li to provést, předejte parametry metodě clear(), které označují obdélníkovou oblast, kterou je třeba vyčistit:
const canvas = document.getElementById('myCanvas');const context = canvas.getContext('2d');context.clearRect(x, y, width, height);
Kde x a y jsou souřadnice levého horního rohu obdélníkové oblasti a width a height jsou šířka a výška této oblasti. Tímto způsobem bude na canvas vyčištěna pouze uvedená obdélníková oblast.
Metoda clear () je snadný a pohodlný způsob čištění canvas, který vám umožní snadno odstranit zobrazené objekty, a to jak úplně, tak částečně.
Čištění canvas pomocí metody toDataURL()
Metoda toDataURL () je užitečný nástroj pro čištění canvas. Tato metoda převádí obsah plátna na datový formát URL, který lze použít jako zdroj obrázku pro jiné prvky HTML.
Chcete-li provést čištění canvas pomocí metody toDataURL (), postupujte podle následujících kroků:
- Získejte odkaz na položku canvas, kterou chcete vymazat.
- Zavolejte metodu toDataURL () pro tento prvek canvas. Výsledkem bude řetězec dat URL, který představuje obsah plátna.
- Nastavte hodnotu vlastnosti src pro obrázek nebo pozadí jiného prvku HTML na výsledný řetězec dat URL.
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
context.clearRect(0, 0, canvas.width, canvas.height);
var dataURL = canvas.toDataURL();
document.getElementById('myImage').src = dataURL;
V tomto příkladu se provede vyčištění obsahu plátna, poté se výsledná data URL použijí k instalaci obrázku do položky s ID myImage.
Přiřazení nové barvy k čištění canvas
K tomu lze použít metodu fillStyle kontext canvas. Tato metoda umožňuje nastavit barvu, přechod nebo vzor výplně pro tvary, včetně barvy pozadí plátna.
Před vyvoláním metody clearRect() Chcete-li vyčistit plátno, je nutné přiřadit novou barvu pozadí pomocí metody fillStyle a nastavit obdélník, jehož souřadnice a rozměry se shodují s rozměry plátna. Například:
let canvas = document.getElementById("myCanvas");
let ctx = canvas.getContext("2d");
ctx.fillStyle = "blue";
ctx.fillRect(0, 0, canvas.width, canvas.height);
// Další je malování na vyčištěné plátno
Ve výše uvedeném příkladu, po přiřazení barvy "blue" pro fillStyle a vyplňte celé plátno obdélníkem, můžete začít kreslit nové prvky na "vyčištěné" plátno.
Přiřazení nové barvy k čištění canvas tak poskytuje více možností pro zadání pozadí, tvaru nebo jakéhokoli jiného barevného efektu, než začnete kreslit nové prvky.
Čištění canvas pomocí metody drawImage()
, můžete použít prázdný obrázek nebo jiný prázdný . Celé plátno bude vyplněno černou barvou, což se považuje za jeho vyčištění.
const canvas = document.getElementById('myCanvas');const context = canvas.getContext('2d');function clearCanvas()
Jak můžete vidět z uvedeného kódu, pro čištění
vytvoříme nový obrázek emptyImage a nastavíme jeho zdroj do prázdného řádku. Poté pomocí metody drawImage () nakreslíme tuto prázdnotu na plátno, počínaje souřadnicemi (0, 0) a konečným bodem (šířka a výška). Tímto způsobem bude celý vyplněn černou barvou, což způsobí jeho vyčištění.
Použití metody fillRect () k čištění canvas
Chcete-li použít metodu fillRect (), měli byste znát její syntaxi a předat jí potřebné parametry:
context.fillRect( x, y, width, height )
- x - souřadnice X levého horního rohu obdélníku;
- y - souřadnice y levého horního rohu obdélníku;
- width - šířka obdélníku;
- height - výška obdélníku.
Nastavením souřadnic x a y na 0 a určením šířky a výšky canvas jako width a height můžete použít metodu fillRect() k úplnému vyčištění prvku canvas.
const canvas = document.getElementById("myCanvas");const context = canvas.getContext("2d");context.fillRect(0, 0, canvas.width, canvas.height);
Výše uvedený kód vyplní celý canvas vybranou barvou, která zabere celou jeho plochu a tím ji vyčistí.
Pomocí metody fillRect () v kombinaci s dalšími funkcemi canvas, můžete vytvářet různé efekty a animace. Vezměte v úvahu, že po použití metody fillRect() bude veškerý předchozí obsah canvas ztracen, takže při jeho používání buďte opatrní.
Čištění canvas změnou vlastností globalCompositeOperation
Pro čištění canvas můžeme nastavit hodnotu vlastnosti globalcompositeoperation na "destination-out". To znamená, že nový vzor bude vyříznut z již nakresleného na canvas, což povede k jeho účinnému čištění.
const canvas = document.getElementById('canvas');
const context = canvas.getContext('2d');
context.fillRect(0, 0, canvas.width, canvas.height);
// nyní všechny nové kresby odstraní to, co již bylo nakresleno
/ nakreslíme novou kresbu.
context.fillRect(50, 50, 100, 100);
// obrázek na canvas se vyčistil, červený čtverec zmizel
Změnou hodnoty vlastnosti globalCompositeOperation tedy můžeme provést efektivní čištění canvas odstraněním již nakreslených prvků a přidáním nových.
Je však třeba si uvědomit, že tato hodnota bude fungovat, dokud nebude změněna nebo dokud nebudou resetovány vlastnosti kontextu.