Element CANVAS. Grafika rastrowa w HTML5. Rysowanie na kanwie. Rysowanie napisów. Teksty Obrazy Animacje Interakcja Ramka formatowana za pomocą CSS

Podobne dokumenty
Multimedia i interfejsy. Ćwiczenie 5 HTML5

Aplikacje internetowe

WIZUALIZACJA INFORMACJI TEKSTOWEJ WSTĘP DO HTML 5 CANVAS

APLIKACJE INTERNETOWE 1 HTML - STRUKTURA STRONY INTERNETOWEJ

Canvas: <canvas id="tutorial" width="150" height="150"></canvas> Canvas WYMAGA domykajacego taga.

Z CSS3 szybciej i przyjemniej

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk


Dodanie nowej formy do projektu polega na:

Sieciowe Technologie Mobilne. Laboratorium 4

Responsywne strony WWW

Alfabetyczna lista stylów

CSS - layout strony internetowej

JavaScript - wykład 4. Zdarzenia i formularze. Obsługa zdarzeń. Zdarzenia. Mysz. Logiczne. Klawiatura. Beata Pańczyk

Mazakiem po WWW czyli kilka słów o obiekcie «canvas»

DOM i JavaScript DOM W3C

HTML. Tim Berners-Lee

Young Programmer: HTML+PHP. Dr inż. Małgorzata Janik, Zajęcia #2

Ten skrypt powinien zająć 2-3 zajęcia. Trzeba go oddać na trzecim labie.

JavaScript obiektowość

plansoft.org Zmiany w Plansoft.org

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Lekcja 11 Gra komputerowa LASER

Tło CSS 3. Gabriela Panuś

Ćw.4 Dokumenty HTML Przy pomocy języka znaczników opisać można strukturę witryny internetowej, postać i wygląd jej elementów.

Krok 1: Stylizowanie plakatu

HTML. HTML(ang. HyperTextMarkupLanguage, pol. hipertekstowy język znaczników) język wykorzystywany do tworzenia stron internetowych

Jarosław Kuchta Podstawy Programowania Obiektowego. Podstawy grafiki obiektowej

Programowanie komputerów Wykład 6: Aplety Java

Kurs WWW wykład 6. Paweł Rajba

Biblioteka Windows Forms

LIVE Gra w życie. LIVE w JavaScript krok po kroku. ANIMACJA Rozpoczynamy od podstawowego schematu stosowanego w animacji

Powtórzenie materiału: CSS3 Spis treści

Dokument hipertekstowy

Pozycjonowanie i poruszanie warstw

RESPONSYWNE INTERFEJSY. Klasy urządzeń klienckich Responsywne style CSS. Waldemar Korłub

Nazwa implementacji: CSS i box model. Autor: Opis implementacji: Poznajemy podstawy CSS oraz dowiadujemy się o rozmieszczaniu elementów na stronie.

Zajęcia nr 15 JavaScript wprowadzenie do JavaScript

HTML (HyperText Markup Language)

Języki programowania wysokiego poziomu. CSS Wskazówki

Defilada - przykład wykorzystujący animowane modele Copperlicht. Andrzej P.Urbański Politechnika Poznańska

Box model: Content. Content - obszar zawartości określany jest za pomocą deklaracji wysokości i szerokości.

Visual Basic for Applications. Formatki tworzenie,

Dzięki arkuszom zewnętrznym uzyskujemy centralne sterowanie wyglądem serwisu. Zewnętrzny arkusz stylów to plik tekstowy z rozszerzeniem css.

JavaScript. mgr inż. Remigiusz Pokrzywiński

Natywne audio WPROWADZENIE

Dokumentacja imapliteapi

[ HTML ] Tabele. 1. Tabela, wiersze i kolumny

Wizualne systemy programowania. Wykład 11 Grafika. dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD

Laboratorium 1: Szablon strony w HTML5

zmiana koloru tła <body bgcolor = kolor > tło obrazkowe <body background= ścieżka dostępu do obrazka >

Język SVG. Język opisu grafiki wektorowej Scalable Vector Graphics

Sieciowe Technologie Mobilne. Laboratorium 1

Allegro5 3/x. Przykład wklejamy go do dev'a zamiast kodu domyślnego dal programu z allegro i kompilujemy.

Wszechnica Poranna: Tendencje w rozwoju informatyki i jej zastosowań Do czego można wykorzystać język JavaScript. Krzysztof Ciebiera

Kompresja stron internetowych

Projektowanie aplikacji internetowych. CSS w akcji

Podstawy HTML i CSS. Wydział Matematyki, Informatyki i Ekonometrii Uniwersytet Zielonogórski

Zdefiniowane style mogą określać układ treści na stronie i sposób jej formatowania np. kolor czcionki, pogrubienia, tło tabel, rysunków itp.

Dokument hipertekstowy

Która z zasad tworzenia części <head> języka HTML jest poprawna

HTML podstawowe polecenia

Współdziałanie przeglądarki i skryptów w pliku HTML (lub XML), oraz współdziałanie przeglądarki i ekranu ilustruje niżej położony rysunek.

- dodaj obiekt tekstowy: /** Maciej */ Stage { title : "First JavaFX App" scene: Scene { width: 300 height: 300 content: [ ] } }

Tworzenie Stron Internetowych. odcinek 6

1. OPEN OFFICE RYSUNKI

I. Wstawianie rysunków

W ogólności znaczniki mogą również posiadać atrybuty które pozwalają wpływać i manipulować własnościami znaczników lub przenosić dodatkowe informacje:

GRAFIKA KOMPUTEROWA I TWORZENIE STRON WWW

Podstawy Processingu. Diana Domańska. Uniwersytet Śląski

Wykład 6 Skrypty typu JavaScript. Technologie internetowe Zofia Kruczkiewicz

Zajęcia 4 - Wprowadzenie do Javascript

2 Przygotował: mgr inż. Maciej Lasota

RESPONSYWNE INTERFEJSY. Klasy urządzeń klienckich Responsywne style CSS. Waldemar Korłub

PROGRAMOWANIE. WNPiD UAM, Programowanie, inż. Piotr Jabłoński

Widżety KIWIPortal. tworzenie umieszczanie na stronach internetowych opcje zaawansowane. Autor: Damian Rebuś Data: Wersja: 1.

Inżynieria Materiałowa i Konstrukcja Urządzeń - Projekt

kaskadowe arkusze stylów

Pascal - grafika. Uruchomienie trybu graficznego. Moduł graph. Domyślny tryb graficzny

Witryny i aplikacje internetowe

Formaty obrazów wykorzystywane na stronach www. Dołączanie obrazów do strony Formatowanie obrazów na stronie Tło na stronie Multimedia

Copyright Packt Publishing First published in the English language under the title HTML5 Canvas Cookbook.

Kaskadowość stylów określa pierwszeństwo w oddziaływaniu na te same elementy strony różnych stylów.

Odsyłacze. Style nagłówkowe

Technologie internetowe w programowaniu

Technologie Informacyjne

DOM (Document Object Model)

Krótki przegląd własności języka CSS

Photoshop. Tworzenie tekstu

System kolorystyczny PANTONE

Podstawy programowania w języku JavaScript

Realizacja prostej gry polegającej na symulacji jazdy samochodem

CSS. Kaskadowe Arkusze Stylów

prowadzący dr ADRIAN HORZYK /~horzyk Konsultacje paw. D-13/325D

HTML (HyperText Markup Language) hipertekstowy język znaczników

Sass Rewolucja w CSS +

Tworzenie Stron Internetowych. odcinek 6

APLIKACJE INTERNETOWE 3 CSS - W Y G L Ą D S T R O N Y I N T E R N E T O W E J

Justyna Klimczyk Nauczyciel informatyki Gimnazjum im. Władysława Stanisława Reymonta w Kleszczowie

Transkrypt:

Element CANVAS Grafika rastrowa w HTML5 Teksty Obrazy Animacje Interakcja Ramka formatowana za pomocą CSS <canvas id="thewall" width="600" height="400" style="border:1px solid #c3c3c3;" </canvas> Rysowanie na kanwie Rysowanie napisów Współrzędne x, y; środek układu współrzędnych: górny, lewy narożnik ctx.fillstyle = "red"; // "#FF0000" ctx.fillrect(10,50,50,30); //start -(1,50); szerokość, wysokość - (50,50) ctx.font = "30px Comic Sans MS"; ctx.fillstyle = "gray"; ctx.textalign = "center"; ctx.filltext("the Wall", canvas.width/2, 30); ctx.stroketext("the Wall", canvas.width/2, 30); 1

Rysowanie łuku i linii Łączenie linii ctx.moveto(10,50); ctx.lineto(10+50,50+0); ctx.lineto(10+50,50+30); ctx.lineto(10,50+30); ctx.closepath(); //ctx.lineto(10,50); ctx.arc(canvas.width/2,350,15,0,2*math.pi); //x, y, r, start, stop ctx.linewidth = 5; ctx.linejoin = 'miter'; //ctx.linejoin = 'round'; //ctx.linejoin = 'bevel'; ctx.moveto(10,50); ctx.lineto(10+50,50+0); ctx.lineto(10+50,50+30); ctx.lineto(10,50+30); ctx.closepath(); www.w3schools.com Transformacje - przesunięcie Transformacje - obrót ctx.fillstyle = "red"; ctx.translate(100, 100); ctx.fillstyle = "blue"; ctx.fillstyle = "red"; ctx.translate(100, 100); ctx.rotate(math.pi/4); ctx.fillstyle = "blue"; 2

Transformacje - skalowanie Transformacja własna ctx.transform(a, b, c, d, e, f); ctx.settransform(a, b, c, d, e, f); ctx.fillstyle = "red"; ctx.translate(100, 100); ctx.scale(2, 0.5); ctx.fillstyle = "blue"; x' = a*x + c*y + e; y' = b*x + d*y + f; ctx.scale(-1, 1); ctx.font = "30px Comic Sans MS"; ctx.fillstyle = "gray"; ctx.textalign = "center"; ctx.filltext("the Wall", 0, 0); przesunięcie Transformacja własna x' = x + e ; // a=1, c=0 y' = y + f; //b=0, d=1 ctx.transform(1, 0, 0, 1, e, f); Transformacja własna skrzywienie poziome x' = a*x + c*y + e; y' = b*x + d*y + f; x' = a*x + c*y + e; y' = b*x + d*y + f; skalowanie x' = a*x; //c=0, e=0 y' = d*y; //b=0, f=0 ctx.transform(a, 0, 0, d, 0, 0); obrót x' = cos(alpha)*x sin(alpha)*y; //e=0 y' = sin(alpha)*x + cos(alpha)*y; //f=0 ctx.transform(cos(alpha), sin(alpha), sin(alpha), cos(alpha), 0, 0); ctx.transform(1, 0, 0.75, 1, 0, 0); ctx.font = "30px Comic Sans MS"; ctx.fillstyle = "gray"; ctx.textalign = "center"; ctx.filltext("the Wall", canvas.width/2, 30); skrzywienie (shear) x' = x + c*y; //a=1, e=0; skrzywienie pionowe c=0 y' = b*x + y; //d=1, f=0; skrzywienie poziome b=0 ctx.transform(1, b, c, 1, 0, 0); 3

Stos stanu kontekstu Reguła niezerowego skręcenia ctx.fillstyle = "red"; ctx.translate(100, 100); ctx.fillstyle = "blue"; ctx.rotate(math.pi/4); ctx.fillstyle = "yellow"; ctx.scale(2, 0.5); ctx.fillstyle = "orange"; ctx.restore(); ctx.restore(); ctx.fillstyle = "green"; ctx.fillrect(0,0,-50,-30); ctx.fillstyle = 'yellow'; ctx.arc(75, 75, 75, 0, 2*Math.PI); ctx.arc(75, 75, 25, 0, 2*Math.PI); ctx.fillstyle = 'orange'; ctx.arc(75, 75, 75, 0, 2*Math.PI, true); ctx.arc(75, 75, 25, 0, 2*Math.PI); =-1 =1-1 +1 +1 =2 +1 +1 =0-1 Reguła parzysty-nieparzysty Wypełnianie gradientem ctx.fillstyle = 'orange'; ctx.arc(75, 75, 75, 0, 2*Math.PI); ctx.arc(75, 75, 25, 0, 2*Math.PI); ctx.fill("evenodd"); NP P var grd = ctx.createlineargradient(10,50,10+50,50+30); grd.addcolorstop(0,"red"); grd.addcolorstop(0.5,"orange"); grd.addcolorstop(1,"red"); ctx.fillstyle = grd; ctx.fillrect(10,50,50,30); NP grd = ctx.createradialgradient(canvas.width/2,350, 1, canvas.width/2,350, 15); //x1, y1, r1, x2, y2, r2 grd.addcolorstop(0,"black"); grd.addcolorstop(1,"gray"); ctx.fillstyle =grd; ctx.arc(canvas.width/2,350,15,0,2*math.pi); //x, y, r, start, stop 4

Cień Przezroczystość var grd = ctx.createlineargradient(10,50,10+50,50+30); grd.addcolorstop(0,"red"); grd.addcolorstop(0.5,"orange"); grd.addcolorstop(1,"red"); ctx.shadowcolor = 'gray'; ctx.shadowblur = 5; ctx.shadowoffsetx = 5; ctx.shadowoffsety = 5; ctx.fillstyle = grd; ctx.fillrect(10,50,50,30); ctx.restore(); ctx.linewidth = 2; ctx.strokerect(10,50,50,30); var grd = ctx.createlineargradient(10,50,10+50,50+30); grd.addcolorstop(0,"red"); grd.addcolorstop(0.5,"orange"); grd.addcolorstop(1,"red"); ctx.fillstyle = grd; ctx.fillrect(10,50,50,30); grd = ctx.createradialgradient(35, 80, 1, 35,80, 15); //x1, y1, r1, x2, y2, r2 grd.addcolorstop(0,"black"); grd.addcolorstop(1,"gray"); ctx.fillstyle =grd; ctx.globalalpha = 0.75; ctx.arc(35,80,15,0,2*math.pi); //x, y, r, start, stop Przycinanie Operacje złożone ctx.arc(x, y, radius, 0, 2 * Math.PI, false); ctx.clip(); // ctx.arc(x - offset, y - offset, radius, 0, 2 * Math.PI, false); ctx.fillstyle = 'yellow'; ctx.rect(0, 0, 50, 50); ctx.fillstyle = 'blue'; ctx.globalcompositeoperation = "source-atop"; ctx.arc(50, 50, 35, 0, 2 * Math.PI, false); ctx.fillstyle = 'red'; ctx.restore(); www.html5canvastutorials.com 5

Parabola Krzywa Beziera ctx.moveto(canvas.width/2-50, 350); ctx.quadraticcurveto(canvas.width/2, 400, canvas.width/2+50, 350); //start point //control point //end point ctx.moveto(188, 130); //context point ctx.beziercurveto(140, 50, //control point 1 388, 10, //control point 2 388, 170); //ending point ctx.linewidth = 5; // line color ctx.strokestyle = 'black'; www.phloxblog.in www.html5canvastutorials.com drawbackground(drawforeground); Wczytanie grafiki function drawbackground(onload){ var imagepaper = new Image(); imagepaper.onload = function(){ ctx.drawimage(imagepaper, 0, 0); //x, y z przesunięciem // x, y, w, h ze skalowaniem onload(); ; imagepaper.src = "sea.jpg"; function drawforeground(){ drawimage(imagepaper, sx, sy, sw, sh, dx, dy, dw, dh) function drawimage(imageobj) { var x = 69; var y = 50; Przekształcanie grafiki ctx.drawimage(imageobj, x, y); var imagedata = ctx.getimagedata(x, y, imageobj.width, imageobj.height); var data = imagedata.data; for(var i = 0; i < data.length; i += 4) { data[i] = 255 - data[i]; // red data[i + 1] = 255 - data[i + 1]; // green data[i + 2] = 255 - data[i + 2]; // blue // overwrite original image ctx.putimagedata(imagedata, x, y); var imageobj = new Image(); imageobj.onload = function() { drawimage(this); ; imageobj.src = 'sea.jpg'; 6

Animacja function drawball(ball, ctx) { ctx.arc(ball.x, ball.y, ball.r, 0,2*Math.PI); //x, y, r, start, var linearspeed = -50; // pixels / second function animate(ball, canvas, ctx, prevtime) { var time = (new Date()).getTime(); var dy = linearspeed * (time-prevtime)/ 1000; if(ball.y+dy > ball.r && ball.y+dy<canvas.height-ball.r) { ball.y += dy; else linearspeed*=-1; ctx.clearrect(0, 0, canvas.width, canvas.height); drawball(ball, ctx); drawforeground(); requestanimationframe(function() { animate(ball, canvas, ctx, time); ); var ball = { x: canvas.width/2, y: 350, r: 15; var starttime = (new Date()).getTime(); animate(ball, canvas, ctx, starttime); Obsługa zdarzeń myszy Zdarzenie generowane przez mysz: click mousedown mousemove, mouseup, mouseover, mouseout canvas.onmousedown = function (e) { // reakcja na przyciśnięcie klawisza myszy // e.clientx, e.clienty ; canvas.addeventlistener('mousedown', function (e) { // reakcja na przyciśnięcie klawisza myszy // e.clientx, e.clienty ); Przeliczenie współrzędnych myszy na współrzędne kanwy Kanwa ma dwa rodzaje wymiarów: obszar do rysowania, ustawiany za pomocą atrybutów: height i width rozmiar elementu, ustawiany za pomocą CSS jeżeli się różnią, to przeglądarka skaluje kanwę <!DOCTYPE html> <head> <title>rozmiar elementu: 600 x 300, rozmiar kanwy: 300 x 150</title> <style> #canvas {width: 600px; height: 300px; </style> </head> <body> <canvas id='canvas'></canvas> </body> </html> function windowtocanvas(canvas, x, y) { var bbox = canvas.getboundingclientrect(); return { x: x - bbox.left * (canvas.width / bbox.width), y: y - bbox.top * (canvas.height / bbox.height) ; Obsługa klawiatury Zdarzenie generowane przez klawiaturę: keydown keypress - tylko dla drukowalnych znaków keyup Własności obiektu zdarzenia: keycode (unsigned long) altkey (boolean) ctrlkey (boolean) metakey (boolean) shiftkey (boolean) which (unsigned long) można bezpiecznie użyć: String.fromCharCode(event.which) 7

Obsługa dotknięć Zdarzenie generowane przez interfejs dotykowy: touchstart touchmove touchend touchcancel Własności obiektu zdarzenia: touches (TouchList) bieżące dotknięcia changedtouches (TouchList) dotknięcia zmienione od poprzedniego zgłoszenia zdarzenia targettouches (TouchList) dotknięcia, które pozostały w elemencie, w którym się rozpoczęły altkey, ctrlkey, metakey, shiftkey (boolean) 8