zoukankan      html  css  js  c++  java
  • Android 颜色渲染(三) Shader颜色渲染

       相信看过在上一篇中提到的三篇文章后,大家已经对颜色处理方面有更深的体会.   

       之前讲到颜色渐变的效果, 具体怎么做呢,这就需要应用颜色渲染. 首先要介绍Android Api中关于颜色渲染的几个重要的类:

       Shader,BitmapShader,ComposeShader,LinearGradient,RadialGradient,SweepGradient

    看一下它们之间的关系:

     

     public class Shader extends Object
    该类作为基类主要是返回绘制时颜色的横向跨度。其子类可以作用与Piant。通过 paint.setShader(Shader shader);来实现一些渲染效果。之作用与图形不作用与bitmap。
    构造方法为默认的构造方法。 

    枚举:
    emun Shader.TileMode 


    定义了平铺的3种模式:
    static final Shader.TileMode CLAMP: 边缘拉伸.


    static final Shader.TileMode MIRROR:在水平方向和垂直方向交替景象, 两个相邻图像间没有缝隙.


    Static final Shader.TillMode REPETA:在水平方向和垂直方向重复摆放,两个相邻图像间有缝隙缝隙.
     


     
    方法:
    1. boolean getLoaclMatrix(Matrix localM); 如果shader有一个非本地的矩阵将返回true.
        localM:如果不为null将被设置为shader的本地矩阵.
    2. void setLocalMatrix(Matrix localM);

        设置shader的本地矩阵,如果localM为空将重置shader的本地矩阵。 

    Shader的直接子类:

    BitmapShader    : 位图图像渲染

    LinearGradient  : 线性渲染

    RadialGradient  : 环形渲染

    SweepGradient   : 扫描渐变渲染/梯度渲染

    ComposeShader   : 组合渲染,可以和其他几个子类组合起来使用

    是不是很像Animation及其子类的关系(AlphaAnimation,RotateAnimation,ScaleAnimation,TranslateAnimation, AnimationSet)

    既有具体的渲染效果,也有渲染效果的组合

    下面说下Shader的使用步骤:

    1. 构建Shader对象

    2. 通过Paint的setShader方法设置渲染对象

    3.设置渲染对象

    4.绘制时使用这个Paint对象

  • 相关阅读:
    golang fmt用法举例
    golang init函数
    golang 定时器
    golang 如何判断变量的类型
    题目:IO多路复用版FTP
    Python模块——gevent 在协程学习中遇到的模块
    python入门三十二天——协程 异步IO数据库队列缓存
    java——第一天 变量,java的基础类型
    操作PPT模块 python-pptx
    python入门三十一天---多进程
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/5571854.html
Copyright © 2011-2022 走看看