h5 canvas html 合成,HTML5 Canvas:合成模式

在我们前面所有HTML5 canvas的例子中,图形的绘制都是一个图形位于另一个图形之上的。我们可以通过设置globalCompositeOperation属性来修改这个默认的行为。换句话来说,我们可以设置绘制的图形与已经绘制在canvas上的图形的合成模式。

2D上下文有两个属性用于控制canvas的图形合成模式:

globalAlpha

globalCompositeOperation

globalAlpha

globalAlpha属性决定你绘制图形的透明度。它的取值可以在0-1之间。0代表绘制的图形完全透明,1表示绘制的图形完全不透明。0.5则表示绘制的图形处于半透明状态。默认的取值为1。

设置globalAlpha属性的js代码如下:

context.globalAlpha = 0.5;

globalCompositeOperation

globalCompositeOperation属性决定绘制的图形如何与canvas上已经存在的图形进行混合。

globalCompositeOperation的语法如下:

globalCompositeOperation = type

globalCompositeOperation的值引用一个“源”和一个“目标”,并且指定源和目标如何进行合成。“源”就是你要绘制的图形,“目标”是已经绘制在canvas上的元素。下面列出了globalCompositeOperation属性的可选值和它们的描述。

source-over:这是默认的取值,表示绘制的图形位于canvas中已经存在的图形之上。

e70025728595e667d99940827ed34e2c.png

source-in:新的图形和目标canvas中的图形重叠且都不透明的部分才被绘制。其它部分使用不同透明度来显示。

171b8977aacec75e16c8d69992846979.png

source-out:新的图形和canvas上已经存在的图形不重叠的部分会被绘制。

9e5b5a4435b1e4064ea095a5b3470f58.png

source-atop:只有和canvas内容重叠的部分的新图形会被绘制。

068dc7d21712adc18476ff2de56cd14f.png

destination-over:在已经存在的canvas内容后面的新图形会被绘制。

49a8538233bc439deede747065deca18.png

destination-in:新图形和已经存在的canvas内容重叠的部分的canvas内容会被保留。其他部分显示为透明。

66beb129f032d4c0b9f0ccf7730b0d00.png

destination-out:新图形和已经存在的canvas内容不重叠的部分的canvas内容会被保留。

b8a79b426802ab7b563c612ecf9292d7.png

destination-atop:已经存在的canvas内容只有和新图形重叠部分会被保留。新图形绘制在canvas内容的后面。

f05832d7aad53a4f29a30a9b6858c2c7.png

lighter:源和目标的重叠部分的颜色由添加的颜色值决定。

5c5844923c4429445e03bcfbffa93693.png

copy:源和目标重叠的部分,源被显示出来。

0f554a33da642d5d7ea38252f5377078.png

xor:源和目标重叠的部分变为透明,其它部分正常绘制。

3a02ca3213dd9ba6f168dae329c822e9.png

multiply:顶层的像素和相应的底层的像素相乘。图片会变暗。

6582e6a520fa8ce1521497d40ab4f203.png

screen:像素会被反转,相乘,然后再反转。返回的图片会变亮(和multiply相反)。

6187ba8e1ead03d0d5beaf81a7ea25f0.png

overlay:multiply 和 screen模式的组合。暗的图层会变得更暗,亮的图层会变得更亮。

616542a603d755315fe48c47a6c20b0d.png

darken:保留源和目标的最暗像素。

c88f58170e428614a84f8f27a59580aa.png

lighten:保留源和目标的最亮像素。

190673cf5e3f0f8af9783ba061910e4f.png

color-dodge:通过反转的源图层来分类底部的目标图层。

d50d9cebc370ab167887d731f99361a9.png

color-burn:通过源图层来分离反转的底部图层,然后在将结果反转。

c3062710c6c52712cd369363e08f2392.png

hard-light:类似multiply 和 screen的组合,但是源和目标图层交换。

20d320f01577c7c4d394ca964fea14ea.png

soft-light:柔光模式。纯黑色或白色不会产生纯黑色或白色。

f39e8e81e919c9c205d2469fe76a9e81.png

difference:从顶层减去底层。

e51603f6a6e57a6d52d9b1d20f5356e3.png

exclusion:和difference模式相同,但是基于低对比度。

c888dcd8c45510fb2d5bd3f6db369599.png

hue:保留底层的亮度和色度,采用顶层的色调(hue)。

779b8243099cf050d1dc8140abf58133.png

saturation:保留底层的亮度和色度,采用顶层的色度(chroma )。

color:保留底层的亮度和色度,采用顶层的色调(hue)和色度(chroma )。

luminosity:保留底层的亮度和色度,采用顶层的亮度。

一个HTML5 Canvas合成模式的例子

下面是一个HTML5 Canvas合成模式的例子。你可以通过点击相应的按钮来查看canvas中两个图层相应的合成模式。你还可以通过拖动滑块来调节canvas的透明度模式。

你的浏览器不支持HTML5 Canvas!

globalAlpha

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值