Canvas 设置透明度 :
语法: ctx.globalAlpha= 属性值;
属性值是 0 - 1之间的数字。 同CSS一样的透明度属性值
不过fillStyle 或 strokeStyle 本身也可以自己设定透明值, 所以用到globalAlpha 并不多,
不过还是了解下,谁知道哪天会有什么反人类的要求会用到呢 (。・・)ノ
<script>
window.onload=function () {
let cans = document.getElementById("myCanvas");
let ctx = cans.getContext("2d");
let text="要显示的字符串文本";
ctx.font="bold 25px KaiTi";
ctx.fillStyle="#7C0DFA";
ctx.fillText(text,30,50);
ctx.globalAlpha=0.5; //透明度设置为一半:0.5
ctx.fillText(text,30,100);
}
</script>
效果图:
然后就是 图形叠加或冲突 等的样式了,这个用起来就类似CSS的 Z-index 感觉有点像,可以设置哪个图形显示的位置居上或居下,也可以更加的细分的画出 叠加到一起时的各种样式,还是挺有意思的:
语法: ctx.globalCompositeOperation=”属性值”
<script>
window.onload=function () {
let cans = document.getElementById("myCanvas");
let ctx = cans.getContext("2d");
ctx.beginPath();
ctx.arc(100,50,25,0,360*Math.PI/180);
ctx.closePath();
ctx.fillStyle="#f00";
ctx.fill(); //绘制目标图像1
ctx.beginPath();
ctx.arc(200,50,25,0,360*Math.PI/180);
ctx.closePath();
ctx.fillStyle="#FFFC43";
ctx.fill(); //绘制目标图像2
//关键是这句:
ctx.globalCompositeOperation="destination-over"; //在源图像上方显示目标图像。
//个人其实觉得xor 比较好看,童鞋们也可以试试 ,(使用下面这句记得注释掉上面那句啊)
// ctx.globalCompositeOperation="xor"; //冲突的地方透明显示。
ctx.beginPath();
ctx.arc(150,110,75,0,360*Math.PI/180);
ctx.closePath();
ctx.fillStyle="#1FA2FF";
ctx.fill(); //绘制源图像
}
</script>
效果图:
关于globalCompositeOperation 更多的属性值如下:
source-over :默认。在目标图像上显示源图像。
source-atop : 在目标图像顶部显示源图像。源图像位于目标图像之外的部分是不可见的。
source-in : 在目标图像中显示源图像。只有目标图像内的源图像部分会显示,目标图像是透明的。
source-out : 在目标图像之外显示源图像。只会显示目标图像之外源图像部分,目标图像是透明的。
destination-over : 在源图像上方显示目标图像。
destination-atop : 在源图像顶部显示目标图像。源图像之外的目标图像部分不会被显示。
destination-in : 在源图像中显示目标图像。只有源图像内的目标图像部分会被显示,源图像是透明的。
destination-out : 在源图像外显示目标图像。只有源图像外的目标图像部分会被显示,源图像是透明的。
lighter : 显示源图像 + 目标图像。
copy : 显示源图像。忽略目标图像。
xor : 使用异或操作对源图像与目标图像进行组合。