2012-07-12 84 views
0

比方說,我有這樣的位圖,這是畫全黑隨機的形狀,並說我想成爲包來改變它的顏色,做我的位圖已被全部塗成白色的第一或有沒有其他的東西呢?安卓:更改位圖的顏色

+0

它的沒必要,你的位圖應該被繪成白色首先你可以設置任何時間與任何背景 – AkashG 2012-07-12 10:20:52

+0

比爲什麼當我使用命令drawBitmap(位圖,矩陣,油漆(顏色綠色));我的位圖仍然是黑色..這是這樣做的方式,或者我把它搞砸了嗎? – 2012-07-12 10:24:18

+0

我認爲一定有問題的東西在塗料(顏色綠色)這就是爲什麼它不繪畫。只通過參數繪畫和設置顏色綠色在paint作爲paint.setColor(Color.GREEN); – AkashG 2012-07-12 10:37:52

回答

3

如果你使用Canvas更改位圖的顏色的辦法是改變自身的位圖。所涉及的步驟如下:

說你要加載現有的位圖,你有地方,你要着色它在某種程度上紅色。

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bitmap); 

之後,您想在將其繪製到畫布上之前修改位圖的像素。您可以創建一個int數組來保存所有的像素。

int[] pixels; 
bitmap.getPixels(pixels, 0, 0, 0, 0, width, height); 

之後,您需要修改數組(比如添加到紅色組件)。但是,現在我們所有的像素數組都是int值。 R,G和B都裝在裏面。如何檢索它們?

int red = Color.red(pixels[n]); 
int green = Color.green(pixels[n]); 
int blue= Color.blue(pixels[n]); 

然後修改通過任何你想要的像素的值,你可以把它放在一個循環或你喜歡的,然後把它放回原來的像素陣列。此外,由於RGB值是8位值,因此RGB值從0到255。

之後,你會使用完全相反的功能回來。

bitmap.setPixels(pixels, 0, 0, 0, 0, width, height); 

然後你就可以去調用Canvas.drawBitmap();

請記住,這個過程應該如果你這樣做頻繁,除了Canvas是做事情的,如果你有興趣的實時應用程序,如遊戲緩慢的方式是緩慢的。

希望它有幫助!

+0

首先,我告訴我我需要初始化像素,所以我是int []像素= null;或者我也有一個編譯錯誤..第二我不能輸入for(int n = 0; n 2012-07-12 15:17:58

+0

沒關係,我用了一個雙循環:) , 有效。謝謝 :) – 2012-07-12 15:48:39