2011-01-19 41 views
0

我正在開發一個Android應用程序,我面臨一個奇怪的問題。 我在SurfaceView上做了一些圖像處理。我使用的是畫布繪製處理後的圖像和下面的方法:Android:圖像不保持它原來的顏色使用canvas.drawBitmap

canvas.drawBitmap(image, x, y, paint) 

我SurfaceView具有彩色背景(#3500ffff,有種很暗綠色),一旦繪製圖像,我可以看到,它的原來的顏色不守恆。它具有非常輕微的深綠色調,就像位圖alpha被更改一樣。

有沒有人遇到過這個問題?你有想法如何解決這個問題嗎?

+1

你確定你有合適的顏色? #00ffff對我來說很像淺綠色。 Alpha = 35意味着它更透明。所以如果你確實有'深綠'色調,那意味着你在黑色背景上繪製了透明的淺綠色? – f20k 2011-01-19 20:43:10

+0

對不起,我很困惑,這實際上是一個非常淺綠色。這是我用於不同佈局背景的顏色,自alpha = 35時,它看起來就像是深綠色的活動背景。 – 2011-01-19 21:33:33

回答

1

這會在16位目的地發生。 16位緩衝器以565格式編碼像素,這使您在綠色通道中獲得更高的精度,這有時會導致綠色色調。一個32位的目的地/位圖可以解決這個問題。

+0

我試圖得到我的位圖副本設置它的配置ARGB_8888,我也改變了我的SurfaceHolder的像素格式爲RGBA_8888,但它似乎沒有解決問題。我在某處做錯了嗎? – 2011-01-19 22:41:06

0

假設你的圖像不透明你是如何定義繪畫的,它不應該是一個透明的顏色或使用一些特殊的效果。嘗試使用null繪畫。

另一件事是你先畫的圖像或背景是什麼?只是想知道你的繪圖順序是否正確。

如果你設置你的表面是不透明的,圖像會改變顏色嗎?

我注意到我認爲與事件同步相關的另一件事是,有時在表面上繪圖時,在手指在屏幕上快速移動初始化繪圖時會創建一個半透明的Sprite。

相關問題