现在的位置: 首页 > 综合 > 正文

ColorFilter类

2014年08月29日 ⁄ 综合 ⁄ 共 1131字 ⁄ 字号 评论关闭

以前没用到过LightingColorFilter这个类 ,google了下
@Override
 protected void onDraw(Canvas canvas) {
  
  int mul = 0xFFFFFF00; //remove BLUE component
  int add = 0x0000FF00; //set GREEN full
  LightingColorFilter lightingColorFilter = new LightingColorFilter(mul, add);
  
  Paint MyPaint_Normal = new Paint();
  Paint MyPaint_Lighting = new Paint();
  MyPaint_Lighting.setColorFilter(lightingColorFilter);
     
     Bitmap myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
     canvas.drawBitmap(myBitmap, 400, 100, MyPaint_Normal);
     canvas.drawBitmap(myBitmap, 500, 100, MyPaint_Lighting);
     
 };

因为是基于三基色配色方案来改的,

而且
0xFFFFFF00  0x表示16进制数,前两个ff表示的是透明度,00-ff,接下来两个ff表示红R,00-ff,后面两个ff表示绿G,00-ff,最后两个ff表示蓝B,00-ff,
所以呢
int mul = 0xFFFFFF00; //remove BLUE component           移除蓝色B部分,可以根据三基色配色图看
int add = 0x0000FF00; //set GREEN full                  绿色的填满,差不多就这个意思了。。。

具体的还可以去测试下

float[] colorMatrix = { 
    1, 0, 0, 0, 0, //red
    0, 0, 0, 0, 0, //green
    0, 0, 0, 0, 0, //blue
    0, 0, 0, 1, 0 //alpha  
  };
  
  Paint MyPaint = new Paint();
  ColorFilter colorFilter = new ColorMatrixColorFilter(colorMatrix);
     MyPaint.setColorFilter(colorFilter);
     
     Bitmap myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
     canvas.drawBitmap(myBitmap, 100, 100, MyPaint);
 };
这个画出来的效果就是红色和黑色了,因为不透明,这个是color矩阵的用法

抱歉!评论已关闭.