当前位置:操作系统 > 安卓/Android >>

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 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,