類似于在Canvas對(duì)象上繪制時(shí)使用Matrix對(duì)象的方法,也可以使用一個(gè)ColorMatrix對(duì)象來改變用于在Canvas對(duì)象上繪制的Paint對(duì)象。
同樣,ColorMatrix以類似的方式工作。它是一個(gè)數(shù)字?jǐn)?shù)組,可以對(duì)圖像的像素進(jìn)行操作。然而不同于操作x、y和z坐標(biāo),它操作顏色值——每個(gè)像素的Red(紅)、Green(綠)、Blue(藍(lán))和Alpha值。
通過調(diào)用其沒有任何參數(shù)的構(gòu)造函數(shù),我們可以構(gòu)建一個(gè)默認(rèn)的ColorMatrix對(duì)象。
ColorMatrix cm = new ColorMatrix();
使用ColorMatrix對(duì)象構(gòu)建一個(gè)ColorMatrixColorFilter對(duì)象,并將它應(yīng)用于Paint對(duì)象,從而使得這個(gè)ColorMatrix對(duì)象可用來改變Canvas對(duì)象上的繪制內(nèi)容。
paint.setColorFilter(new ColorMatrixColorFilter(cm));
為了能夠?qū)olorMatrix對(duì)象進(jìn)行實(shí)驗(yàn),可以簡(jiǎn)單地將它插入到“選擇圖片”示例中的繪圖部分。
Bitmap bmp = BitmapFactory.decodeStream(getContentResolver().
openInputStream(imageFileUri), null, bmpFactoryOptions);
Bitmap alteredBitmap = Bitmap.createBitmap(bmp.getWidth(),
bmp.getHeight(),bmp.getConfig());
Canvas canvas = new Canvas(alteredBitmap);
Paint paint = new Paint();
ColorMatrix cm = new ColorMatrix();
paint.setColorFilter(new ColorMatrixColorFilter(cm));
Matrix matrix = new Matrix();
canvas.drawBitmap(bmp, matrix, paint);
alteredImageView.setImageBitmap(alteredBitmap);
chosenImageView.setImageBitmap(bmp);