Android Paint 你完全都了解了吗(一)

2019-04-16  本文已影响0人  Endless_123

1、颜色

1.1、基本颜色

像素的基本颜色根据绘制的内容不同而有不同的方式:Canvas的颜色填充方法canvas.drawColor/drawRGB/drawdrawARGB()
颜色直接写入方法中进行设置背景;canvas.drawBitmap()的颜色直接由Bitmap对象提供;绘制图形与文字的颜色则需要设置Paint。进入正题Pain设置颜色的方法分为两种:

1.1.1、直接设置颜色
        Paint paint = new Paint();
        paint.setColor(Color.RED);
        paint.setARGB();
        canvas.drawRect(0, 0, 100, 100, paint);
rect.png
1.1.2 设置 Shader来实现着色方案

Android 通过Paint设置 setShader可以达到很多绚丽的效果。
Shader有LinearGradient、RadialGradient、SweepGradient、BitmapShader、ComposeShader 这五个子类分别代表了不同的着色规则,下面来一一说明:

        Shader shader = new LinearGradient(30, 30, 150, 150,
                Color.RED, Color.BLUE, Shader.TileMode.CLAMP);
        paint.setShader(shader);
        canvas.drawRect(30, 30, 150, 150, paint);

LinearGradient构造方法中最后一个参数为TileMode,TileMode分为三种CLAMP会在端点之外延续端点处的颜色,REPEAT重复模式,MIRROR镜像模式;看下效果:


shader.jpeg

ps:设置Shader后setColor所设置的颜色将不会生效。

PorterDuff.Mode用来指定两个着色器绘制的策略目前一共有17种,大致可以分为2类合成与混合。
Alpha 合成:


PorterDuff-Alpha.jpeg

混合:


PorterDuff-blend.jpeg
1.2 ColorFilter 颜色过滤

通过setColorFilter 进行设置颜色过滤;ColorFilter有三个子类:LightingColorFilter PorterDuffColorFilter 和 ColorMatrixColorFilter。

R = R * mul.R / 0xff + add.R  
G = G * mul.G / 0xff + add.G  
B = B * mul.B / 0xff + add.B  
1.3 Xfermode

Xfermode 以绘制的内容作为源图像,以 View 中已有的内容作为目标图像,选取一个 PorterDuff.Mode 作为绘制内容的颜色处理方案。

paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER)); 使用时直接使用Xfermode 的子类PorterDuffXfermode就可以达到我们想要的效果。

ps:注意其中透明区域的范围

上一篇 下一篇

猜你喜欢

热点阅读