2012-12-20 20 views
1

我只是試圖繪製/繪製到Android的畫布。但是,當我使用十六進制值或使用setARGB方法設置顏色時,它不起作用。但是當我使用Color.x(例如Color.GREEN)時,它可以工作。這裏的代碼:Android顏色(Paint中的setColor)需要負整數?

Bitmap image = Bitmap.createBitmap(bitmapWidth, bitmapHeight, Bitmap.Config.ARGB_8888); 
    Canvas canvas = new Canvas(image); 
    Paint paintBackground = new Paint(); 
    int green = Color.argb(0, 0, 255, 0); // 65280 (Won't work) 
    green = 0x0000ff00; // 65280 (Won't work) 
    paintBackground.setARGB(0, 0, 255, 0); 
    green = paintBackground.getColor(); // 65280 (Won't work) 
    green = Color.GREEN; // -16711936 (Works!) 
    paintBackground.setColor(green); 
    green = paintBackground.getColor(); // -16711936 
    paintBackground.setStyle(Paint.Style.FILL); 
    canvas.drawRect(0, 0, bitmapWidth, bitmapHeight, paintBackground); 

所以基本上Color.GREEN返回-16711936 - 和這個作品。 但是,十六進制值是65280 - 這不起作用。也就是說,它不繪製綠色的矩形。

我需要,因爲我需要的顏色以後設置爲0x00ffff00這裏,然後以不同的十六進制值使用十六進制值。

確實安卓色彩(在畫圖的setColor)需要一個負整數?

回答

6

的問題是,0x0000ff00綠色,但完全透明綠色。全不透明的綠色0xff00ff00是,因爲你已經注意到了,-16711936。同樣,使用setARGB當你需要爲阿爾法指定255的顏色是完全不透明的

+0

謝謝!對我而言,總是疏於監督。我正在使用Java AWT中的示例代碼,並將alpha設置爲0 - 以便將我拋棄。現在我需要弄清楚爲什麼他們將alpha設置爲零以及爲什麼它們對他們有效...... – Jason

0

您也可以撥打Color.rgb(0, 255, 0)。用rgb() alpha默認是255,完全不透明。

1

顏色保持4場,alpha,紅色,綠色和藍色。無論什麼時候什麼都是不透明的,它是負面的。 50.2%透明綠色爲正(0x7F00FF00/2130771712)和49.8%透明綠色爲負(0x8000FF00/-2,147,418,368)

-1

也許幫助你:

Paint pnt = new Paint(); 
pnt.setColor(Color.argb(100,50,205,50));