Kompozycja kolorów na canvas
B – niebieski kwadrat – jest obiektem aktualnie istniejącym na canvas i jest ‘destination’ (miejscem przeznaczenia).
A – czerwone koło – jest obiektem, który jest dodawany i jest ‘source’ (obiektem źródłowym).
Domyślnym składaniem jest source-atop
.
Operacja | Opis |
---|---|
copy | Wyświetla tylko A. |
destination-atop | Wyświetla B tylko w miejscach, gdzie A i B się nakładają. Wyświetla A w miejscach gdzie A i B się nie nakładają. |
destination-in | Wyświetla B tylko w obszarze, w którym A i B nakładają się. A nie jest wyświetlane. |
destination-out | Wyświetla B tylko w obszarze, w którym A i B nie nakładają się. A nie jest wyświetlane. |
destination-over | Wyświetla całe B, A A tylko w miejscy, gdzie A i B nie nakładają się. |
lighter | W obszarach, gdzie A i B nakładają się wyświetla sumę A i B. Tam gdzie się nie nakładają wyświetla A i B normalnie. |
darker | W obszarach, gdzie A i B nakładają się wyświetla różnicę A i B. Tam gdzie się nie nakładają wyświetla A i B normalnie. |
source-atop | Wyświetla A tam gdzie A i B nakładają się, a B tam gdzie A i B nie nakładają się. |
source-in | Wyświetla A tylko w obszarze gdzie A i B nakładają się. B nie jest wyświetlane. |
source-out | Wyświetla A tylko w obszarze, gdzie A i B nie nakładają się. B nie jest wyświetlane. |
source-over | Wyświetla całe A, a B tylko w miejscach, gdzie A i B nie nakładają się. |
xor | Wyświetla A i B w obszarach, w których nie nakładają się. Nic nie wyświetla w miejscach, gdzie A i B nakładają się. |
Listing
var compositeTypes = [ 'source-over','source-in','source-out','source-atop', 'destination-over','destination-in','destination-out', 'destination-atop','lighter','darker','copy','xor' ]; function drawShape() { for (i=0;i<compositeTypes.length;i++) { var label = document.createTextNode(compositeTypes[i]); document.getElementById('lab'+i).appendChild(label); var ctx = document.getElementById('tut'+i).getContext('2d'); // draw rectangle ctx.fillStyle = "#FF3366"; ctx.fillRect(15,15,70,70); // set composite property ctx.globalCompositeOperation = compositeTypes[i]; // draw circle ctx.fillStyle = "#0066FF"; ctx.beginPath(); ctx.arc(75,75,35,0,Math.PI*2,true); ctx.fill(); } }