Android Graphics - ColorFilter
16lz
2021-01-23
[ 转自:http://yueguc.iteye.com/blog/782494]
1.使用ColorFilter
MaskFilter是对一个Paint的alpha通道的转换,而ColorFilter则是对每一个RGB通道应用转换。所有由ColorFilter所派生的类在执行它们的转换时,都会忽略alpha通道。
Android包含三个ColorFilter:
ColorMatrixColorFilter 可以指定一个4×5的ColorMatrix并将其应用到一个Paint中。ColorMatrixes通常在程序中用于对图像进行处理,而且由于它们支持使用矩阵相乘的方法来执行链接转换,所以它们很有用。
LightingColorFilter 乘以第一个颜色的RGB通道,然后加上第二个颜色。每一次转换的结果都限制在0到255之间。
PorterDuffColorFilter 可以使用数字图像合成的16条Porter-Duff 规则中的任意一条来向Paint应用一个指定的颜色。
使用setColorFilter方法应用ColorFilter,如下所示:
Java代码- myPaint.setColorFilter(newLightingColorFilter(Color.BLUE,Color.RED));
API中的ColorMatrixSample是说明如何使用ColorFilter和Color Matrix的非常好的例子。
2.
Java代码- privatestaticvoidsetContrast(ColorMatrixcm,floatcontrast){
- floatscale=contrast+1.f;
- floattranslate=(-.5f*scale+.5f)*255.f;
- cm.set(newfloat[]{
- scale,0,0,0,translate,
- 0,scale,0,0,translate,
- 0,0,scale,0,translate,
- 0,0,0,1,0});
- }
Java代码
- floatcontrast=mAngle/180.f;
- setContrast(cm,contrast);
- paint.setColorFilter(newColorMatrixColorFilter(cm));
- canvas.drawBitmap(mBitmap,x+mBitmap.getWidth()+10,y,paint);
更多相关文章
- android 通过eclipse混淆代码 打包 + proguard 总结
- EditText获取焦点框的颜色改变
- Android的SDK与源代码
- Android 图片压缩实现过程代码
- android中ImageView设置选中与不选中颜色
- android开源代码编译方法
- 一个二维码实现IOS和android两个平台的下载核心代码
- Android 中提高代码安全性-混淆代码
- win平台改代码到android 平台需要注意