上一节课中,我们学习了canvas的变形。包括移动translate(x,y),旋转rotate(angle),缩放scale(x,y)。还有他们三个的基础,进行矩阵变换的tansform(m11,m12,m21,m22,dx,dy)。利用tansform可以轻松实现tanslate(保持其它四个参数不变,只改变dx,dy)就可以了。rotate(保持其它参数不变,只改变m12,m21就可以实现),scale(其它四个参数不变,只改变m11,m22)就可以了。
今天我们学习globalCompositionOperate属性。这个属性可以帮我们实现各种神奇的功能,比如颜色混合,各种形状的橡皮擦,有好多一部分,得对颜色相关知识理解到很熟悉才能搞定。我们从现在开始逐一学习一下。
下面讲的大多数效果都可以在点击这里查看
source-over
这个是globalCompositionOperate的默认属性,新绘制的图形将覆盖在原先的图像上。
source-in
这个属性的效果是旧图形将完全隐藏,也可以说是完全透明,新图形只显示与旧图形重合的部分。
这个效果的实际用例,我觉得用来做黑夜中的灯光会比较好。将底层的画布画上比较美的场景,然后利用它逐渐播放出来。
source-out
这个属性首先也会和source-in一样,将原图透明或者说是隐藏,不过接下来的操作,就有点和source-in不一样了,两者正好相反,它呢只显示新图形和旧图形不重合的部分。
关于这个属性的应用,着实让我有点费脑子,没有想到好的使用场景,等那一天实践的过程中想到了再来补充。
source-atop
这属性一开始和source-in还有source-out都是相反的,它显示旧图形。然后和source-in有点像,新图形只在和旧图形重合的地方显示出来。也就是在新旧图形重合的地方将新旧图形都绘制出来。
destination-over
在现有的内容后面绘制新内容。也就是新旧图形都显示,但是新图形只在和旧图形不重合的地方显示出来。
说的好像有点啰嗦,其实就是新绘制的图形层级低于旧图形。
destination-in
只在重合的地方显示旧图形
destination-out
只显示新旧图形不重合部分的旧图形
这个就可以做个很好的铅笔擦了
destination-atop
只显示新旧图形重合部分的旧图形和不重合部分的新图形
lighter
新旧图形都显示,但是新旧图形重合部分的颜色将发生变化。变化的规则是新图形颜色和旧图形相加,然后产生一个新的颜色出来。
这一部分需要对三原色加起来怎么配颜色有很好的认识,只有这样,才能很好的运用它,否则的话就只能是探险了。不过,也许我们可以做一个这样的应用,教我是配色家,让大家通过配置不同的颜色来生成一种新的颜色,用来玩游戏。
copy。
这属性只显示新图新。旧图形将被完全隐藏。
xor
这个属性原文的解释是“图像中,那些重叠和正常绘制之外的其他地方是透明的。”,但在我实践的过程中发现,其实它就是只显示新旧图形不重合的部分,重合的部分是透明的。不知道是不是我对原文理解错了。
multiply
将顶层像素与底层相应像素相乘,结果是一幅更黑暗的图片。同lighter。需要对颜色的变化有相当的了解才行
screen
像素被倒转,相乘,再倒转,结果是一幅更明亮的图片。说实话,我也是一年懵逼。
overlay
multiply和screen的结合,原本暗的地方更暗,原本亮的地方更亮。
darken
保留两个图层中最暗的像素。
lighten
保留两个图层中最亮的像素。
color-dodge
将底层除以顶层的反置。
color-burn
将反置的底层除以顶层,然后将结果反过来。
hard-light
屏幕相乘(A combination of multiply and screen)类似于叠加,但上下图层互换了。
difference
一个柔和版本的强光(hard-light)。纯黑或纯白不会导致纯黑或纯白。
exclusion
和difference相似,但对比度较低。
hue
保留了底层的亮度(luma)和色度(chroma),同时采用了顶层的色调(hue)。
saturation
保留底层的亮度(luma)和色调(hue),同时采用顶层的色度(chroma)。
color
保留了底层的亮度(luma),同时采用了顶层的色调(hue)和色度(chroma)。
luminosity
保持底层的色调(hue)和色度(chroma),同时采用顶层的亮度(luma)。
这一块知识点很多,我觉得canvas要想玩的好,这一块是必须的。我觉得这一块也是最考验大家的综合能力的了,尤其是后面这些这些颜色变化的。
暂时誊写下来吧。