Jak zacząć rysowanie z elementem Canvas z HTML 5?
Jedną z dobroci HTML 5 jest Canvas, czyli w wolnych słowach coś, co pozwala malować za pomocą JavaScriptu. W tym tipsie przybliżymy to zagadnienie na prostym przykładzie.
Tag <canvas> jest pewnego rodzaju pustym tagiem <img>. Webmaster ustala wysokość i szerokość obszaru malowania. Zamiast atrybutu "alt", możliwe jest umieszczenie innego kodu HTML w środku tagu canvas jako alternatywnej treści.
Przykład tagu canvas z alternywnym tekstem:
<canvas id="myDrawing" width="200" height="200">
<p>Twoja przeglądarka nie obsługuje canvas.</p>
</canvas>
Zabawę z <canvas> należy rozpocząć od sprawdzenia, czy przeglądarka go obsługuje oraz od stworzenia kontekstu rysującego (drawing context).
var drawingCanvas = document.getElementById('myDrawing');
// sprawdza czy element jest w DOM i czy przeglądarka obsługuje canvas
if(drawingCanvas.getContext) {
// Inicjuje dwu-wymiarowy tzw. "drawing context"
var context = drawingCanvas.getContext('2d');
//tutaj umieszczamy komendy canvas
}
Możemy przystąpić do "malowania". Jednym z prostszych przykładów może być uśmiechnięta buźka podobna do tej z testu Acid. Zaczynamy od stworzenia okrągłej twarzy:
context.strokeStyle = "#000000";context.fillStyle = "#FFFF00";
context.beginPath();context.arc(100,100,50,0,Math.PI*2,true);
context.closePath();context.stroke();
context.fill();
W powyższym kodzie oprócz kształtu ustalone zostały kolory zarówno obwiedni, jak i wypełnienia. To dopiero początek, do zrobienia pozostały jeszcze oczy, uśmiech oraz nos.
Cały kod wygląda następująco:
<script type="text/javascript">window.onload = function() {
var drawingCanvas = document.getElementById('myDrawing');if(drawingCanvas && drawingCanvas.getContext) {
var context = drawingCanvas.getContext('2d');
// twarz
context.strokeStyle = "#000000";
context.fillStyle = "#FFFF00";
context.beginPath();
context.arc(100,100,50,0,Math.PI*2,true);
context.closePath();
context.stroke();
context.fill();
// oczy
context.strokeStyle = "#000000";
context.fillStyle = "#FFFFFF";
context.beginPath();
context.arc(80,80,8,0,Math.PI*2,true);
context.closePath();
context.stroke();
context.fill();
context.fillStyle = "#009966";
context.beginPath();
context.arc(80,80,5,0,Math.PI*2,true);
context.closePath();
context.fill();
context.strokeStyle = "#000000";
context.fillStyle = "#FFFFFF";
context.beginPath();
context.arc(120,80,8,0,Math.PI*2,true);
context.closePath();
context.stroke();
context.fill();
context.fillStyle = "#009966";
context.beginPath();
context.arc(120,80,5,0,Math.PI*2,true);
context.closePath();
context.fill();
// nos
context.fillStyle = "#000000";
context.beginPath();
context.moveTo(93,100);
context.lineTo(100,93);
context.lineTo(107,100);
context.lineTo(100,107);
context.closePath();
context.fill();
// uśmiech
context.strokeStyle = "#000000";
context.beginPath();
context.moveTo(70,110);
context.quadraticCurveTo(100,150,130,110);
context.quadraticCurveTo(100,150,70,110);
context.closePath();
context.stroke();
}
}
</script>
Efektem końcowym będzie taki oto obrazek:
źródło: thinkvitamin.com
Popularne
Nazwa padła ofiarą szantażystów, inni polscy hosterzy też zagrożeni?
19
Premiera Diablo 3 wzbudziła dyskusję na temat gier, które zawsze chcą być online
19
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Nowy problem z Windows 8: bootuje się za szybko
10
Amerykańscy rodzice straszeni „e-narkotykami” dostępnymi w Sieci
21
Z okazji wypuszczenia akcji Facebooka przypomnijmy sobie, kim jest Zuckerberg
10
Blueseed: libertariańska sztuczna wyspa przyciągnęła już ponad sto startupów z całego świata
8
Rewolucja w Firefoksie, nowa łatka czterokrotnie ograniczyła zużycie pamięci
20
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
CVDazzle: makijaż jest w stanie pokonać automatyczne systemy ulicznego monitoringu
3
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Co czeka programistów po czterdziestce?
27
Ubuntu 12.04 LTS już dostępny: stabilna dystrybucja na następne pięć lat?
28
Społeczność
stop_gupota "Fanatyczny" Diablo 3 jest dopiero od 10 dni.
Mas Ciekawa informacja, ale akurat projekt wytopu stali przez chłopów to był...
_Igancio Poziom artykułu jest bardzo niski ! Niczego się nie dowiedziałem , wygląda...
voluu A ja mam problem. MIanowicie, po dodaniu kodu z tego poradnika miniaturki...
Sebek Pozycjonowanie stron za pośrednictwem firm oferujących
swoje usługi nie...
asdosad jak to zrobić na xp??
lol Jak ktoś tu wcześniej zauważył - artykuł jest o niczym, a właściwie ukrytą...
- Najdmen.pl: Konta www z wyłączonym licznikiem transferu od IONIC.pl (1)
- 2BE.PL: [Oferta] Promocja jak złoto w 2BE.PL (1)
- gardius: Dobra hurtownia sportowa (1)
- gardius: Tanie książki gdzie warto kupować? (1)
- Najdmen.pl: PROMOCJA, 500 DOMEN .EU ZA 1 PLN NETTO ! (1)
- VMLine: [Oferta] Serwery VPS Xen-HVM/OpenVZ z darmową administracją (2)
- Marek: Generowanie PDFa (2)
Polecane książki
Praca
Czytaj Webhosting
Chcesz być na bieżąco z naszymi informacjami? Zapisz się na Newsletter.
Zarejestruj domenę
Sprawdź dostępność swojej domeny:
| .pl: | 0 zł | .com: | 19.90 zł | |
|---|---|---|---|---|
| .com.pl: | 0 zł | .eu: | 19.90 zł |









