• Android 颜色渲染PorterDuff及Xfermode详解


    在讲具体的使用之前补充一点知识,这就是 ProterDuff的由来:

    相信大多数人看到这个ProterDuff单词很奇怪了吧,这肿么个意思呢,然后就用有道啊,金山啊开始翻译,但是翻译软件给出的结果肯定还是  ProterDuff或者"未找到".

    这是神马情况呢?因为ProterDuff是两个人名的组合: Tomas Proter和 Tom Duff. 他们是最早在SIGGRAPH上提出图形混合概念的大神级人物.有兴趣的童靴们可以自己查下并深入了解,在此不再做过多描述.

    利用ProterBuff.Mode我们可以完成任意2D图像测操作, 比如涂鸦画板应用中的橡皮擦效果,绘制各种自定义的进度,等等很强大的效果,下面请看具体的介绍:

    Xfermode有三个子类 :

    AvoidXfermode  指定了一个颜色和容差,强制Paint避免在它上面绘图(或者只在它上面绘图)。

    PixelXorXfermode  当覆盖已有的颜色时,应用一个简单的像素异或操作。

    PorterDuffXfermode  这是一个非常强大的转换模式,使用它,可以使用图像合成的16条Porter-Duff规则的任意一条来控制Paint如何与已有的Canvas图像进行交互。

    要应用转换模式,可以使用setXferMode方法,如下所示:

    [java] view plain copy
     
    1. AvoidXfermode avoid = new AvoidXfermode(Color.BLUE, 10, AvoidXfermode.Mode. AVOID);    borderPen.setXfermode(avoid); 

      从上面我们可以看到PorterDuff.Mode为枚举类,一共有16个枚举值:

      1.PorterDuff.Mode.CLEAR 

        所绘制不会提交到画布上。
      2.PorterDuff.Mode.SRC

         显示上层绘制图片
      3.PorterDuff.Mode.DST

        显示下层绘制图片
      4.PorterDuff.Mode.SRC_OVER

        正常绘制显示,上下层绘制叠盖。
      5.PorterDuff.Mode.DST_OVER

        上下层都显示。下层居上显示。
      6.PorterDuff.Mode.SRC_IN

         取两层绘制交集。显示上层。
      7.PorterDuff.Mode.DST_IN

        取两层绘制交集。显示下层。
      8.PorterDuff.Mode.SRC_OUT

       取上层绘制非交集部分。
      9.PorterDuff.Mode.DST_OUT

       取下层绘制非交集部分。
      10.PorterDuff.Mode.SRC_ATOP

       取下层非交集部分与上层交集部分
      11.PorterDuff.Mode.DST_ATOP

       取上层非交集部分与下层交集部分
      12.PorterDuff.Mode.XOR

        异或:去除两图层交集部分
      13.PorterDuff.Mode.DARKEN

        取两图层全部区域,交集部分颜色加深
      14.PorterDuff.Mode.LIGHTEN

        取两图层全部,点亮交集部分颜色
      15.PorterDuff.Mode.MULTIPLY

        取两图层交集部分叠加后颜色
      16.PorterDuff.Mode.SCREEN

        取两图层全部区域,交集部分变为透明色

  • 相关阅读:
    oracle操作小常识
    Report Machine
    ReportMachine
    如何创建Asp.net MVC ViewModel
    Page Scroll Menu (页面中锚点菜单)
    EF selection expression 与 Linq备忘
    chrome 浏览器 开发者工具 性能检测 参数解释
    IE 兼容性写法
    Asp.net MVC Bundle 的使用与扩展
    ASP.NET MVC 性能优化总结
  • 原文地址:https://www.cnblogs.com/jsonfan/p/5423808.html
Copyright © 2020-2023  润新知