Paint详解

Paint的API大致可以分为4类:

  • 颜色
  • 效果
  • drawText()相关
  • 初始化

颜色

canvas绘制的内容有三层对颜色的处理

1.1基本颜色

像素的基本颜色,根据绘制内容的不同而有不同的控制方式,Canvas的颜色填充类方法drawColor/RGB/ARGB()的颜色,是直接写在方法参数里,通过参数来设置的;drawBitmap()的颜色,是直接由Bitmap对象来提供的,除此之外,是图形和文字的绘制,他们的颜色就需要使用paint参数来额外设置了

paint设置颜色的方法有两种:一种是直接用Paint.setColor/ARGB()来设置颜色,另一种是使用Shader来指定着色方案

前两种没什么可说的, 最后一种setShader(Shader shader)设置Shader,使用此方法后setColor/ARGB()所设置的颜色就不再起作用

通常绘制时不直接使用Shader类,而使用它的几个子类:

  • LinearGradient 线性渐变,设置两个点和两种颜色,以这两个点作为端点,使用两种颜色的渐变来绘制颜色

构造方法:

LinearGradient(float x0, float y0, float x1, float y1, int color0, int color1, Shader.TileMode tile)

参数:

x0 y0 x1 y1:渐变的两个端点的位置

color0 color1 是端点的颜色

title:端点范围之外的着色规则,类型是TitleMode。TItleMode一个有3个值可选:CLAMP,MIRROR和REPEAT。CLAMP(夹子模式?)会在端点之外延续端点处的颜色;MIRROR是镜像模式,REPEAT是重复模式。

  • RadialGradient 辐射渐变,从中心向周围辐射状的渐变

构造方法:

RadialGradient(float centerX, float centerY, float radius, int centerColor, int edgeColor, TileMode tileMode)

参数:

centerX centerY:辐射中心的坐标

radius:辐射半径

centerColor:辐射中心的颜色

edgeColor:辐射边缘的颜色

titleMode:辐射范围之外的着色模式

  • SweepGradient 扫描渐变

构造方法:

SweepGradient(float cx, float cy, int color0, int color1)

参数:

cx cy:扫描的中心

color0:扫描的起始颜色

color1:扫描的终止颜色

  • BitmapShader 用Bitmap着色,可用来制作圆形头像等

构造方法:

BitmapShader(Bitmap bitmap, Shader.TileMode tileX, Shader.TileMode tileY)

参数:

bitmap:用来做模板的Bitmap对象

titleX:横向的TitleMode

titleY:纵向的TitleMode

  • ComposeShader 混合着色器

构造方法:

ComposeShader(Shader shaderA, Shader shaderB, PorterDuff.Mode mode)

参数:

shaderA shaderB:两个相继使用的Shader

mode:两个Shader的叠加模式,即shaderA和shaderB应该怎样共同绘制,它的类型是PorterDuff.Mode:

一个有17个,可以分为两大类:

  1. Alpha合成(Alpha Compositing)
    1. SRC(source)
    2. SRC_OVER(Source Over)
    3. SRC_IN(Source In)
    4. SRC_ATOP(Source Atop)
    5. DST(Destination)
    6. DST_OVER(Destination Over)
    7. DST_IN(Destination In)
    8. DST_ATOP(Destination Atop)
    9. CLAEAR(Clear)
    10. SRC_OUT(Source Out)
    11. DST_OUT(Destination Out)
    12. XOR(Exclusive Or)
  2. 混合(Blending)
    1. DARKEN
    2. LIGHTEN
    3. MULTIPLY
    4. SCREEN
    5. OVERLAY

第一类有12种,是关于Alpha通道的计算,也可称为Alpha合成(Alpha compositing)

第二类混合,这一类操作的是颜色本身而不是Alpha通道

对于Alpha合成类的操作,掌握他们,并在实际开发中灵活运用;而对于混合类的,你只要把他们的名字记住就好了

猜你喜欢

转载自blog.csdn.net/shenglong0210/article/details/88533483