canvas学习21之globalCompositionOperation学习

上一节课中,我们学习了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要想玩的好,这一块是必须的。我觉得这一块也是最考验大家的综合能力的了,尤其是后面这些这些颜色变化的。

暂时誊写下来吧。