html5 Canvas之画布合成的属性总结

Posted 经验轮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了html5 Canvas之画布合成的属性总结相关的知识,希望对你有一定的参考价值。

首先解释一下合成的含义,合成是指如何精细控制画布上面的对象的透明度和分层效果。其中控制Canvas画布合成的操作的两个属性分别是:globalAlpha和globalCompositeOperation

一、globalAlpha:这个属性的默认值是1.0(完全不透明),并且可以设置从0.0(完全透明)到1.0的值,需要注意的是,这个属性必须在图形绘制之前设置

二、globalCompositeOperation:这个属性的值在globalAlpha以及所有变换都生效后控制在当前Canvas位图中绘制图形。它有多个值,下面一一做解释,在下面讲到的“A”是指要绘制在画布上的形状,“B”是指显示在画布上的位图

1、Copy:二者重叠,显示A而不显示B

2、destination-atop:B位于A上,二者重叠且都不透明的地方显示B,A不透明而B透明的地方显示A,其余显示透明

3、destination-in:B在A内,二者都不透明的地方显示B,其余显示透明

4、destination-out:B在A外,B不透明而A透明的地方显示B,其余显示透明

5、destination-over:B覆盖A,B不透明的地方显示B,其余显示A

6、lighter:A加B,显示A和B之和,色值接近1.0

7、source-atop:A在B之上,二者重叠且都不透明的地方显示A,B不透明而A透明的地方显示B,其余显示透明

8、source-in:A在B内,二者都不透明的地方显示A,其余显示透明

9、source-over:(默认值)A覆盖B,A不透明的地方显示A,其余显示B

10、source-out:A在B外,A不透明的地方而B透明的地方显示A,其余显示透明

11、xor:这个只能意会不能言传,自己赋值看效果就可以了。

使用方法如下所示:

上面代码在浏览器中的预览效果如下:

在这里小编给一个小编做程序多年的经验:

1、context.globalCompositeOperation = "destinationatop";这种写法在浏览器中是不能正常使用的

2、如果要变换新绘制的形状,必须用到Canvas函数中的save()和restore()两个函数

save() 保存当前状态到堆栈

restore() 调出最后储存的堆栈恢复画布

3、globalAlpha属性只影响设置之后的形状


以上是关于html5 Canvas之画布合成的属性总结的主要内容,如果未能解决你的问题,请参考以下文章

熬夜总结了 “HTML5画布” 的知识点(共10条)

HTML5之canvas-1画布矩形

html5新特性之画布

HTML5之canvas 7画布旋转

html5之canvas初解

HTML5画布Canvas文本填充线段属性裁剪透明度与像素合并方式