Canvas, czyli grafika z przeglądarki. Część pierwsza: 7 kroków do opanowania podstaw
Jedną z nowości HTML5 jest element <canvas>. To pole, w którym za pomocą JavaScriptu (i całkowicie niezależnie od zewnętrznych wtyczek) można tworzyć grafiki dwu- i trójwymiarowe, a nawet animacje. Dziś z wykorzystaniem <canvas> powstają już nawet gry – my na razie pokażemy Wam, jak utworzyć prostą grafikę na potrzeby strony WWW.
1. Pierwsza grafika
Aby utworzyć obrazek, wystarczy umieścić w kodzie następujący znacznik:
<canvas id="obrazek" width="300" height="150">
Twoja przeglądarka nie obsługuje Canvas.
</canvas>
Treść zawarta pomiędzy znacznikami jest wyświetlana w przeglądarkach nieobsługujących elementu canvas. Inne browsery za sprawą poniższego kodu JavaScript (jeśli nie wiesz, jak osadzać kod, skorzystaj z tego kursu) wyświetlają naomiast grafikę.
var context = document.getElementById('obrazek').getContext('2d');
if (context) {
// teraz możemy rysować!
context.fillRect(0, 0, 150, 100);
}
Powyższy kod najpierw znajduje odniesienie do zawartości dwuwymiarowej umieszczonego uprzednio elementu canvas i umieszcza je w zmiennej context. Za jej pomocą odbywa się wszelkie rysowanie. W przykładzie narysowano wypełniony na czarno prostokąt, umieszczony we współrzędnych (0,0) i o wielkości 150x100 pikseli.
2. Linie i kształty
Aby rozpocząć dodawanie konkretnych kształtów do obrazka, należy najpierw określić kolor dla wypełnień i obramowań. Ponieważ rysowanie kształtów odbywa się w kolejności, w której instrukcje występują w kodzie, logicznym wydaje się, by zdefiniować kolor przed rysowaniem elementów.
context.fillStyle = '#00f'; // blue
context.strokeStyle = '#ff0000'; // red
context.lineWidth = 4;
Powyższe właściwości określają kolejno kolor i wypełnienie linii, a także ich grubość.
Do rysowania kształtów wykorzystywane są następujące funkcje:
context.fillRect (0, 0, 150, 50); //wypełniony prostokąt
context.strokeRect(0, 60, 150, 50); //prostokąt z obwodką
context.clearRect (30, 25, 90, 60); //pusty prostokąt
3. Wielokąty
Pole canvas pozwala także na rysowanie wielokątów. Wystarczy wyłącznie określić kolory i podawać serie współrzędnych kolejnych punktów. Ponieważ funkcja beginPath() ustawia kursor w polu (0,0) (górny, lewy wierzchołek pola canvas), zazwyczaj należy go przenieść w wybrane miejsce z wykorzystaniem funkcji moveTo().
Bezpośrednio przed zakończeniem rysowania wielokąta można go albo wypełnić, albo narysować samą linię - bez tego wielokąt nie będzie widoczny.
context.fillStyle = '#f0f';
context.strokeStyle = '#ff0';
context.lineWidth = 4;
context.beginPath();
context.moveTo(10, 10);
context.lineTo(100, 10);
context.lineTo(10, 100);
context.lineTo(10, 10);
context.fill(); //rysuje wypełnienie
context.stroke(); //rysuje obramowanie
context.closePath();
«poprzednia 1 2 3 następna »
Polecamy
Reklama
Komentarze
Aby dodać komentarz, musisz podać swój nick, treść komentarza oraz poprawnie przepisać oba słowa z obrazka
(słowa muszą być rozdzielone spacją).
W treści komentarza można używać języka formatowania BBcode.
Popularne
Pobierałeś pirackie pliki? Uważaj! Kontrole antypirackie w domach użytkowników to codzienność
36
Pobieraczek.pl pozwie internautów, którzy nie chcą płacić abonamentu
1455
Debata w sprawie ACTA: internauci spodziewali się chyba czegoś innego
14
Wynalazca WWW przed sądem: walczy tam o wolny dostęp do webowych technologii dla każdego
8
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
15
Internet w EU bez Facebooka i Google? Firmy nie mają wyboru: albo się dostosują, albo…
10
Zaktualizuj PHP do wersji 5.4, zyskasz za darmo nawet o kilkudziesiąt procent wyższą wydajność aplikacji
6
MSWiA zamówiło narzędzia do „złamania” Tora i podsłuchiwania internautów. Czy złamało przy tym prawo?
89
[Aktualizacja] Facebook zablokował Demotywatory.pl. W czym zawiniły?
36
FBI zamknęło Megaupload. Anonimowi dali się sprowokować. Teraz ich akcja uzasadni potrzebę SOPA?
17
Pobieraczek.pl pozwie internautów, którzy nie chcą płacić abonamentu
1455
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
15
„Donald matole, twój rząd dopadną kibole” – hakerska elita przyłącza się do walki z ACTA
23
Pobierałeś pirackie pliki? Uważaj! Kontrole antypirackie w domach użytkowników to codzienność
36
Społeczność
WebDev @slawek22
OK. Rozumiem i wiem, że koncerny stosują regionalizacje i nie...
slawek22 >są inne rodzime serwisy VOD z legalny filmami
WebDev no fakt... jeśli...
WebDev @BLACK BEAR®
"bo denerwujesz mi ludzi na forum” lool
Minister Zdrowia...
tobas ClickShop bardzo wolno działa!!!
Nie dajcie się nabrać na wygląd i...
blackbear @WebDev, widzę że muszę Ci rozjaśnić we łbie. Czytaj więc i nie pisz...
Jay Brak obsługi aplikacji x86/x64 ze zwykłych desktopów to kręcenie na siebie...
WebDev @slawek22
Tak jak ze wszystkim tak i z prawem własności można przesadzić...
- 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)
- Marek: problem z menu (2)
- Marek: Własne checkboxy w HTML,CSS (1)
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ł |











#1 dav 2010-03-15 16:56:36 0
IP: 91.197.12.[...] Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.1.8) Gecko/20100214 Ubuntu/9.10 (karmic) Firefox/3.5.8
#2 dAREuS® 2010-03-15 19:16:52 0
IP: 188.121.11.[...] Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.89 Safari/532.5
#3 invictus™ 2010-03-15 20:16:04 0
IP: 80.51.57.[...] Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.18) Gecko/2010021501 Ubuntu/9.04 (jaunty) Firefox/3.0.18
#4 dAREuS® 2010-03-15 20:50:41 0
IP: 188.121.11.[...] Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.89 Safari/532.5
#5 invictus™ 2010-03-16 08:29:39 0
IP: 80.51.57.[...] Mozilla/5.0 (Windows; U; Windows NT 5.0; pl; rv:1.9.2) Gecko/20100115 Firefox/3.6
#6 dav 2010-03-16 10:40:55 0
IP: 91.197.12.[...] Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.1.8) Gecko/20100214 Ubuntu/9.10 (karmic) Firefox/3.5.8
#7 invictus™ 2010-03-16 15:38:43 0
IP: 80.51.57.[...] Mozilla/5.0 (Windows; U; Windows NT 5.0; pl; rv:1.9.2) Gecko/20100115 Firefox/3.6
#8 dav 2010-03-17 09:56:32 0
IP: 91.197.12.[...] Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.1.8) Gecko/20100214 Ubuntu/9.10 (karmic) Firefox/3.5.8