1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
<!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>
|