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

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值