
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();
            }
         }
     
											