【HTML5】Canvas之globalCompositeOpe

作者: Bruce_zhuan | 来源:发表于2017-01-30 20:17 被阅读958次

    globalCompositeOperation即Canvas中的合成操作。

    1、source-over

    这是默认值,他表示绘制的图形将画在现有画布之上

    $(document).ready(function(){

    varcanvas=document.getElementById("myCanvas");

    varcontext=canvas.getContext("2d");

    context.fillStyle="rgb(63,169,245)";

    context.fillRect(50,50,100,100);

    context.globalCompositeOperation="source-over"

    context.fillStyle="rgb(255,123,172)";

    context.fillRect(100,100,100,100);

    });


    2、destination-over

    这个操作的值与前一个值相反,所以现在目标绘制在源之上

    $(document).ready(function(){

    varcanvas=document.getElementById("myCanvas");

    varcontext=canvas.getContext("2d");

    context.fillStyle="rgb(63,169,245)";

    context.fillRect(50,50,100,100);

    context.globalCompositeOperation="destination-over"

    context.fillStyle="rgb(255,123,172)";

    context.fillRect(100,100,100,100);


    3、source-atop

    这个操作会将源绘制在目标之上,但是在重叠区域上两者都是不透明的。绘制在其他位置的目标是不透明的,但源是透明的。

    $(document).ready(function(){

    varcanvas=document.getElementById("myCanvas");

    varcontext=canvas.getContext("2d");

    context.fillStyle="rgb(63,169,245)";

    context.fillRect(50,50,100,100);

    context.globalCompositeOperation="source-atop"

    context.fillStyle="rgb(255,123,172)";

    context.fillRect(100,100,100,100);

    });

    4、destination-atop

    这个操作与source-atop相反,目标绘制在源之上

    $(document).ready(function(){

    varcanvas=document.getElementById("myCanvas");

    varcontext=canvas.getContext("2d");

    context.fillStyle="rgb(63,169,245)";

    context.fillRect(50,50,100,100);

    context.globalCompositeOperation="destination-atop"

    context.fillStyle="rgb(255,123,172)";

    context.fillRect(100,100,100,100);

    });


    5、source-in

    在源于目标重叠的区域只绘制源,而不重叠的部分编程透明的。

    $(document).ready(function(){

    varcanvas=document.getElementById("myCanvas");

    varcontext=canvas.getContext("2d");

    context.fillStyle="rgb(63,169,245)";

    context.fillRect(50,50,100,100);

    context.globalCompositeOperation="source-in"

    context.fillStyle="rgb(255,123,172)";

    context.fillRect(100,100,100,100);

    });


    6、destination-in

    这个操作与source-in相反,在源于目标重叠的区域保留目标。而不重叠的部分都变成透明的。

    $(document).ready(function(){

    varcanvas=document.getElementById("myCanvas");

    varcontext=canvas.getContext("2d");

    context.fillStyle="rgb(63,169,245)";

    context.fillRect(50,50,100,100);

    context.globalCompositeOperation="destination-in"

    context.fillStyle="rgb(255,123,172)";

    context.fillRect(100,100,100,100);

    });


    7、source-out

    在与目标不重叠的区域上绘制源,其他部分都变成透明的。

    $(document).ready(function(){

    varcanvas=document.getElementById("myCanvas");

    varcontext=canvas.getContext("2d");

    context.fillStyle="rgb(63,169,245)";

    context.fillRect(50,50,100,100);

    context.globalCompositeOperation="source-out"

    context.fillStyle="rgb(255,123,172)";

    context.fillRect(100,100,100,100);

    });


    8、destination-out

    在与源不重叠的区域上保留目标。其他部分都变成透明的。

    $(document).ready(function(){

    varcanvas=document.getElementById("myCanvas");

    varcontext=canvas.getContext("2d");

    context.fillStyle="rgb(63,169,245)";

    context.fillRect(50,50,100,100);

    context.globalCompositeOperation="destination-out"

    context.fillStyle="rgb(255,123,172)";

    context.fillRect(100,100,100,100);

    });


    9、lighter

    这个值与顺序无关,如果源与目标重叠,就将两者的颜色值想家。得到的颜色值的最大取值为255,结果就为白色。

    $(document).ready(function(){

    varcanvas=document.getElementById("myCanvas");

    varcontext=canvas.getContext("2d");

    context.fillStyle="rgb(63,169,245)";

    context.fillRect(50,50,100,100);

    context.globalCompositeOperation="lighter"

    context.fillStyle="rgb(255,123,172)";

    context.fillRect(100,100,100,100);

    });


    10、copy

    这个值与顺序无关,只绘制源,覆盖掉目标。

    $(document).ready(function(){

    varcanvas=document.getElementById("myCanvas");

    varcontext=canvas.getContext("2d");

    context.fillStyle="rgb(63,169,245)";

    context.fillRect(50,50,100,100);

    context.globalCompositeOperation="copy"

    context.fillStyle="rgb(255,123,172)";

    context.fillRect(100,100,100,100);

    });


    11、xor

    这个值与顺序无关,只绘制出不重叠的源与目标区域。所有重叠的部分都变成透明的

    $(document).ready(function(){

    varcanvas=document.getElementById("myCanvas");

    varcontext=canvas.getContext("2d");

    context.fillStyle="rgb(63,169,245)";

    context.fillRect(50,50,100,100);

    context.globalCompositeOperation="xor"

    context.fillStyle="rgb(255,123,172)";

    context.fillRect(100,100,100,100);

    });

    相关文章

      网友评论

        本文标题:【HTML5】Canvas之globalCompositeOpe

        本文链接:https://www.haomeiwen.com/subject/hqyhittx.html