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 »
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
Nazwa padła ofiarą szantażystów, inni polscy hosterzy też zagrożeni?
22
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
Premiera Diablo 3 wzbudziła dyskusję na temat gier, które zawsze chcą być online
19
Nowy problem z Windows 8: bootuje się za szybko
10
Amerykańscy rodzice straszeni „e-narkotykami” dostępnymi w Sieci
21
Anonymous upubliczniają 1,7 GB danych wykradzionych Departamentowi Sprawiedliwości USA
11
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
Ubuntu 12.04 LTS już dostępny: stabilna dystrybucja na następne pięć lat?
28
Zostań webmasterem polskiego rządu, zarobisz na komfortowe życie dla siebie i swojej rodziny
33
Społeczność
kaziks Galaxy S II - u mnie po aktualizacji Firefox działa strasznie zacina się...
Doniek Szkoda że strona z demo nie działa - non stop się przeładowuje
bartez Niech zaczną jeszcze bardziej ograniczać programistów, to zdziwią się ilu...
Dave Smith Jestem Pastor Dave Smith prywatny pożyczkodawca pieniądze, z czego ponad...
marcusm Fajna reklama produktu za 500 zł
rza a to starsze aplikacje nie będą działać i kompilacja pod Windows SDK 7.1...
Krzaczor @Jakub Szymański: Możesz zalinkować do opisów jakichś polskich przypadków...
- 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ł |











#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