0
点赞
收藏
分享

微信扫一扫

android画图——颜色过滤


颜色的过滤 不是很懂,牵扯到颜色的数组配置吧,只把简单的代码写下吧:

mBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.balloons); 

 mDrawable = context.getResources().getDrawable(R.drawable.balloons);


上面两个代码 分别得到一个Bitmap,和Drawable

private static void setContrastTranslateOnly(ColorMatrix cm, float contrast) { 

 float scale = contrast + 1.f; 

 float translate = (-.5f * scale + .5f) * 255.f; 

 cm.set(new float[] { 

 1, 0, 0, 0, translate, 

 0, 1, 0, 0, translate, 

 0, 0, 1, 0, translate, 

 0, 0, 0, 1, 0, 

 }); 

 } 


private static void setContrastScaleOnly(ColorMatrix cm, float contrast) { 

 float scale = contrast + 1.f; 

 // float translate = (-.5f * scale + .5f) * 255.f; 

 cm.set(new float[] { 

 scale, 0, 0, 0, 0, 

 0, scale, 0, 0, 0, 

 0, 0, scale, 0, 0, 

 0, 0, 0, 1, 0 }); 


 }


设置一个矩阵 进行颜色变化吧 只是没搞懂设置数值和颜色的关系

ColorMatrix cm = new ColorMatrix(); 

 mAngle += 2; 

 if (mAngle > 180) { 

 mAngle = 0; 

 } 


 //convert our animated angle [-180...180] to a contrast value of [-1..1] 

 float contrast = mAngle / 180.f; 


setContrastTranslateOnly(cm, contrast); 

// 画笔设置颜色过滤 

 paint.setColorFilter(new ColorMatrixColorFilter(cm)); 

 canvas.drawBitmap(mBitmap, x, y + 2*(mBitmap.getHeight() + 10), 

 paint); 

//图片设置颜色过滤 

// setContrastTranslateOnly(cm, contrast); 

 // mDrawable.setColorFilter(new ColorMatrixColorFilter(cm)); 

 mDrawable.setColorFilter(new PorterDuffColorFilter( 0xffff00,PorterDuff.Mode.LIGHTEN)); 

 mDrawable.setBounds(new Rect(25, 330,150,430)); 

 mDrawable.draw(canvas); 

画笔设置过滤 和图片设置过滤我没看出区别有多大,但是这里有两种方法设置颜色过滤 

mDrawable.setColorFilter(new PorterDuffColorFilter( 0xffff00,PorterDuff.Mode.LIGHTEN)); 

mDrawable.setColorFilter(new ColorMatrixColorFilter(cm)); 

一个针对单色彩一个针对一个颜色矩阵

举报

相关推荐

0 条评论