| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <style> | |
| canvas { display: inline-block; } | |
| </style> | |
| </head> | |
| <body> | |
| <canvas id="source-over" width="80" height="80"></canvas> | |
| <canvas id="source-in" width="80" height="80"></canvas> | |
| <canvas id="source-out" width="80" height="80"></canvas> | |
| <canvas id="source-atop" width="80" height="80"></canvas> | |
| <br> | |
| <canvas id="destination-over" width="80" height="80"></canvas> | |
| <canvas id="destination-in" width="80" height="80"></canvas> | |
| <canvas id="destination-out" width="80" height="80"></canvas> | |
| <canvas id="destination-atop" width="80" height="80"></canvas> | |
| <br> | |
| <canvas id="lighter" width="80" height="80"></canvas> | |
| <canvas id="xor" width="80" height="80"></canvas> | |
| <script> | |
| var compositeOps = [ | |
| 'source-over', | |
| 'source-in', | |
| 'source-out', | |
| 'source-atop', | |
| 'destination-over', | |
| 'destination-in', | |
| 'destination-out', | |
| 'destination-atop', | |
| 'lighter', | |
| 'xor' | |
| ]; | |
| for (var i = 0; i < compositeOps.length; i++) { | |
| var op = compositeOps[i]; | |
| var ctx = document.getElementById(op).getContext('2d'); | |
| ctx.fillStyle = 'red'; | |
| ctx.fillRect(5, 5, 40, 40); | |
| ctx.globalCompositeOperation = op; | |
| ctx.fillStyle = 'deepskyblue'; | |
| ctx.beginPath(); | |
| ctx.arc(45,45,20,0,Math.PI*2,true); | |
| ctx.fill(); | |
| } | |
| </script> | |
| </body> | |
| </html> |