Android ApiDemos示例解析(60):Graphics->ColorMatrix
ColorMatrix 可以用来变换图像中每个像素颜色,可以实现增强对比度,照片底片效果,或者变换不同的颜色空间(比如颜色通常以RGBA表示,但也可以使用YUV来表示),对应于三维坐标系中使用Matrix进行坐标变换,可以把颜色的RGBA当成RGBA 颜色空间中的[r,g,b,a]矢量坐标,ColorMatrix则可以用来对这个[r,g,b,a]进行坐标变换后得到一个新的颜色值,反应到图像上图像的颜色,亮度,透明度就会产生变化。
本例使用了三种不同的Color 变换Matrix: setContrast,setContrastTranslateOnly,setContrastScaleOnly,连上原图一共显示4幅图像:
ColorMatrix的基本使用方法和Matrix类似,可以支持矩阵的加减乘除。定义了ColorMatrix可以使用ColorMatrixColorFilter 来为Canvas设置需要的ColorMatrix:
[java]
setContrast(cm, contrast);
paint.setColorFilter(new ColorMatrixColorFilter(cm));
canvas.drawBitmap(mBitmap, x + mBitmap.getWidth() + 10,
y, paint); www.zzzyk.com
setContrast(cm, contrast);
paint.setColorFilter(new ColorMatrixColorFilter(cm));
canvas.drawBitmap(mBitmap, x + mBitmap.getWidth() + 10,
y, paint);
同样onDraw中调用invalidate ,再次触发onDraw形成动画,可以看到图像的对比度不断变化。
作者:mapdigit
补充:移动开发 , Android ,