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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值