Vediamo, ora, degli snippet di codice che illustrano praticamente le funzioni inerenti il compositing. Per quanto attiene alla proprietà
globalAlpha, il codice seguente disegna sul canvas tre rettangoli di differente colore, e poi un quarto rettangolo, in esso orizzontalmente centrato, con un valore di trasparenza di 0.4 punti:
if (context && "globalAlpha" in context)
{ // disegno un rettangolo di un determinato blu
context.fillStyle = "#07E";
context.fillRect(0, 0, 200, 300);
// disegno un rettangolo di un determinato verde
context.fillStyle = "#7D0";
context.fillRect(200, 0, 200, 300);
// disegno un rettangolo di un determinato rosso
context.fillStyle = "#F50";
context.fillRect(400, 0, 200, 300);
// applico un valore di trasparenza
context.globalAlpha = 0.4;
// disegno una barra orizzontale sul giallino...
// con la trasparenza
context.fillStyle = "#FE0";
context.fillRect(0, 100, 600, 100);
}
L'immagine seguente mostra il risultato dell'esecuzione dello snippet:
Per quanto attiene, invece alla proprietà
globalCompositeOperation, il codice seguente crea tanti canvas quanti sono i valori di proprietà accettati, disegnando in ciascuno un rettangolo di destinazione e un cerchio sorgente, e applicando una differente proprietà di
compositing. Per far funzionare il codice, create nel body della pagina HTML un
div con id
pc e una classe CSS denominata
multicanvas con le proprietà:
border: solid 1px black
background-color: #ddd
var composite_operations =
[
"source-over", "source-in", "source-out", "source-atop",
"destination-over", "destination-in", "destination-out", "destination-atop",
"lighter", "darker", "copy", "xor"
];
for (var ix = 0; ix < composite_operations.length; ix++)
{ // creo l'oggetto canvas
var canvas = document.createElement("canvas");
// imposto gli attributi
canvas.setAttribute("width", "100"); canvas.setAttribute("height", "100"); canvas.className = "multicanvas";
var div = document.getElementById("pc");
// lo appendo al div placeholder
div.appendChild(canvas);
if (canvas && HTML5.Features.hasCanvas())
{ // ottengo il contesto 2D
var context = canvas.getContext("2d");
// verifico se posso usare gli attributi di compositing
if (context && "globalCompositeOperation" in context)
{ // rettangolo destinazione
context.fillStyle = "#00F";
context.fillRect(1, 1, 60, 60);
// imposto l'attributo di composizione
context.globalCompositeOperation = composite_operations[ix];
// cerchio sorgente
context.fillStyle = "#0F0";
context.beginPath();
context.arc(50, 50, 30, 0, Math.PI * 2, false);
context.fill();
// reset del compositing
context.globalCompositeOperation = "source-over";
// testo
context.fillStyle = '#000';
context.font = "bold 10px Verdana";
context.fillText(composite_operations[ix], 1, 95);
}
}
}
L'immagine seguente mostra il risultato dell'esecuzione dello snippet con Firefox 4 beta 2 dove, però, il valore
darker non è ancora supportato.
- Pubblicazioni correlate:
- 10-05-2010 Guida ad HTML5: storia della sua nascita (1/3)
- 11-05-2010 Guida ad HTML5: storia della sua nascita (2/3)
- 17-05-2010 Guida ad HTML5: storia della sua nascita (3/3)
- 18-05-2010 Guida ad HTML5: supporto dei browser (1/6)
- 24-05-2010 Guida ad HTML5: supporto dei browser (2/6)
- 25-05-2010 Guida ad HTML5: supporto dei browser (3/6)
- 31-05-2010 Guida ad HTML5: supporto dei browser (4/6)
- 01-06-2010 Guida ad HTML5: supporto dei browser (5/6)
- 07-06-2010 Guida ad HTML5: supporto dei browser (6/6)
- 08-06-2010 Guida ad HTML5: l'elemento canvas, l'area del disegno
- 14-06-2010 Guida ad HTML5: l’elemento canvas, disegno di forme geometriche (1/4)
- 18-06-2010 Guida ad HTML5: l’elemento canvas, disegno di forme geometriche (2/4)
- 21-06-2010 Guida ad HTML5: l’elemento canvas, disegno di forme geometriche (3/4)
- 25-06-2010 Guida ad HTML5: l’elemento canvas, disegno di forme geometriche (4/4)
- 28-06-2010 Guida ad HTML5: l’elemento canvas, immagini e testo (1/4)
- 02-07-2010 Guida ad HTML5: l’elemento canvas, immagini e testo (2/4)
- 05-07-2010 Guida ad HTML5: l’elemento canvas, immagini e testo (3/4)
- 09-07-2010 Guida ad HTML5: l’elemento canvas, immagini e testo (4/4)
- 12-07-2010 Guida ad HTML5: l’elemento canvas, manipolazione diretta dei pixel (1/2)
- 16-07-2010 Guida ad HTML5: l’elemento canvas, manipolazione diretta dei pixel (2/2)
- 19-07-2010 Guida ad HTML5: l’elemento canvas, sfumature
- 23-07-2010 Guida ad HTML5: l’elemento canvas, ombreggiature
- 26-07-2010 Guida ad HTML5: l’elemento canvas, compositing (1/2)
- 30-08-2010 Guida ad HTML5: l’elemento canvas, stili di linea e pattern (1/2)