HTML5 Canvas 绘图方法整理 【十七、Canvas透明度 / 图形叠加、层次、冲突】

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 : 使用异或操作对源图像与目标图像进行组合。

猜你喜欢

转载自blog.csdn.net/freedomvenly/article/details/79355811
今日推荐