本文共 1970 字,大约阅读时间需要 6 分钟。
本节书摘来自异步社区《HTML5 Canvas开发详解》一书中的第2章,第2.6节,作者: 【美】Steve Fulton , Jeff Fulton 更多章节内容可以访问云栖社区“异步社区”公众号查看。
合成是指如何精细控制画布上对象的透明度和分层效果。有两个属性可以控制Canvas合成操作:globalAlpha和globalCompositeOperation。
例2-6显示这些值如何影响形状绘制,结果如图2-11所示。
例2-6 Canvas合成示例function drawScreen(){ //在屏幕上绘制一个大方块 context.fillStyle = "black"; // context.fillRect(10, 10, 200, 200); //保留 globalCompositeOperation 原有值不变 //现在绘制一个红色正方形 context.fillStyle = "red"; context.fillRect(1, 1, 50, 50); //现在设置为source-over context.globalCompositeOperation = "source-over"; //在旁边再画一个红色正方形 context.fillRect(60, 1, 50, 50); //现在设置为destination-atop context.globalCompositeOperation = "destination-atop"; context.fillRect(1, 60, 50, 50); //现在设置globalAlpha context.globalAlpha = .5; //现在设置为source-atop context.globalCompositeOperation = "source-atop"; context.fillRect(60, 60, 50, 50);}
如例2-6所示,这里测试了globalCompositeOperation和globalAlpha Canvas属性。当指定字符串为sourceover时,实际上是将globalCompositeOperation重设回默认值。然后创建了几个红色方形来显示不同的合成选项和组合。注意,destination-atop切换到当前Canvas位图之下的新绘制形状,globalAlpha属性只影响设置之后所画的形状。这意味着不必为绘制新的形状设定新的透明度而使用save()和restore() Canvas对状态进行操作。
在2.7节将讲解一些影响整个画布的变换。因此,如果要变换新绘制的形状,必须使用save()和restore()函数。
转载地址:http://kcbva.baihongyu.com/