Professional Documents
Culture Documents
PROPRIETĂȚI CANVAS ȘI
TRANSFORMĂRI SPECIFICE
COORDONATOR ȘTIINȚIFIC:
MIRONELA PÎRNĂU STUDENT:
TUDORACHE GH.
MIHAI-ALIN
CUPRINS
2
Elementul <canvas>
Elementul <canvas> este unul din cele mai interesante elemente introduse in HTML5.
Tag-ul <canvas> este destul de simplu, defineste lungimea, inaltimea si un ID unic. Dar se
folosesc o serie de instructiuni JavaScript (denumite generic APIs) pentru a desena obiecte in
canvas.
Exemplu de mai jos arata structura de baza pentru implementare canvas intr-o pagina web:
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>Titlu paginii</title>
<script type="text/javascript">
function draw() {
// preia intr-un obiect tag-ul <canvas>
var canvas = document.getElementById("id_canvas");
</body>
</html>
Atributele width si height specifica dimensiunile zonei CANVAS in pagina web.
Important este ID-ul (aici "id_canvas"), acesta se foloseste in JavaScript ca sa fie preluat
tag-ul <canvas> intr-un obiect (cu document.getElementById('ID')), apoi se aplica functii si
proprietati specifice pentru a crea desene care sunt afisate in tag-ul CANVAS.
Metoda getContext('2d') trebuie aplicata la elementul Canvas ca sa se obtina un obiect la
care se aplica instructiuni API pentru crearea continutului din <canvas>.
3
<canvas> este un element de tip bloc, poate fi adaugat in oricare alt tag de tip bloc, precum <p>,
<div>, sau in elementele noi de structura introduse in HTML5: <section>, <article>.
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>Canvas patrat albastru</title>
<script type="text/javascript"><!--
function draw() {
var canvas = document.getElementById('cav1');
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
ctx.fillStyle = '#0101fe';
ctx.fillRect (50, 60, 100, 100);
}
}
4
Sintaxa:
• ctx.fillStyle = "Culoare" - reprezinta culoarea din interiorul formei. Se poate folosi orice
metoda de definire a culorii utilizata in CSS (blue, #0000ff, #00f, sau rgb(0,0,255) ).
- Daca nu se specifica o culoare, va fi aplicat negru.
Puteti crea desene mult mai complexe, combinand cercuri, linii, patrulatere, gradient,
transparenta.
Deoarece multi utilizatori inca folosesc browser care nu recunoaste elementul CANVAS,
puteti adauga un text cu un mesaj de eroare pt. no-canvas, intr-un tag ascuns
(cu style="display:none;").
Daca adaugati codul JavaScript dupa tag-ul <canvas>, nu mai e necesar window.onload,
doar apelati simplu functia cu API-uri pt. canvas. Veti vedea in exemplele urmatoare.
5
Adaugare transparenta
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>Canvas transparenta</title>
</head>
<body>
<canvas width="200" height="200" id="cav1"></canvas>
<p id="no_cav" style="display:none;">Folositi un browser compatibil-
Canvas ca sa vedeti aceasta zona.</p>
<script type="text/javascript"><!--
function draw() {
var canvas = document.getElementById('cav1');
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
ctx.fillStyle = '#0101fe';
ctx.fillRect (50, 60, 100, 100);
ctx.fillStyle = "rgba(220,223,0, 0.5);";
ctx.fillRect (90, 105, 100, 80);
}
else {
// face vizibil tag-ul cu text pt. no-canvas
document.getElementById('no_cav').style.display = 'block';
}
}
6
Desenare linii
• lineTo(x, y)
Aceasta metoda traseaza o linie de la punctul curent pana la coordonatele (x, y).
Pentru a seta sau muta punctul curent de inceput, se foloseste metoda moveTo().
• moveTo(x, y)
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
7
}
else {
// face vizibil tag-ul cu text pt. no-canvas
document.getElementById('no_cav').style.display = 'block';
}
}
Aceasta metoda deseneaza un arc de cerc intre startUnghi si endUnghi, in sens invers orelor
de ceas daca argumentul anticlockwise e setat true, daca e false deseneaza in sensul orelor de ceas.
Ca sa desenati un crc, setati: startUnghi=0, endUnghi=Math.pi*2
Dupa ce ati definit arc-ul de cerc (sau cercul) cu metoda arc(), aplicati:
8
<canvas width="200" height="200" id="cav1"></canvas>
<p id="no_cav" style="display:none;">Folositi un browser compatibil-
Canvas ca sa vedeti aceasta zona.</p>
<script type="text/javascript"><!--
function draw() {
var canvas = document.getElementById('cav1');
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
ctx.arc(75,75,50,0,Math.PI*2,true); // Fata
ctx.moveTo(110,75);
ctx.arc(75,75,35,0,Math.PI,false); // Gura
ctx.moveTo(65,65);
ctx.arc(60,65,4,0,Math.PI*2,true); // Ochiul stang
ctx.moveTo(95,65);
ctx.arc(90,65,4,0,Math.PI*2,true); // Ochiul drept
ctx.stroke();
}
else {
// face vizibil tag-ul cu text pt. no-canvas
document.getElementById('no_cav').style.display = 'block';
}
}
9
Canvas - Text
• ctx.font = valoare - Specifica fontul textului, la fel ca proprietatea font-family din CSS.
Exemplu:
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
10
}
Canvas - Umbre
Instrctiunile JavaScript pentru umbre contin proprietati care se aplica la obiectul context:
• ctx.shadowBlur = valoare - Seteaza "blur" la umbra, in pixels. Cu cat valoarea e mai mica,
umbra e mai ascutita.
Urmatorul cod deseneaza o sfera albastra, cu o umbra verde avand transparenta 0.5:
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
11
ctx.fill();
}
else {
// face vizibil tag-ul cu text pt. no-canvas
document.getElementById('no_cav').style.display = 'block';
}
}
Rezultat:
Canvas - Gradient
Dupa ce ati creat obiectul pentru gradient, puteti adauga culori in gradient, cu
metoda addColorStop() aplicata acestui obiect. Urmatoarele doua coduri arata cum puteti crea si
folosi gradient.
12
1) ExempLu cu createLinearGradient():
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
draw();
--></script>
Rezultat:
13
2) Exemplu cu createRadialGradient():
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
draw();
--></script>
Rezultat:
14
Adaugare imagini
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
15
else {
// face vizibil tag-ul cu text pt. no-canvas
document.getElementById('no_cav').style.display = 'block';
}
}
draw();
--></script>
Rezultat:
16