2013-03-25 67 views
0

夥計們。在Java中着色RGB像素

我一直在研究一些代碼,它涉及到繪製像素。我來到翻過下面這段代碼:

pixels[x + y * width] = i * 128; 

似乎我無法理解的是:當爲奇數時,像素以藍色繪製;當是偶數,他們被繪製成黑色。我已閱讀了關於rgb = 65536 * r + 256 * g + b,但我未能將此問題納入此邏輯。例如,爲什麼2688(21 * 128)和2816(23 * 128)繪製藍色像素,而2816(22 * 128)繪製黑色?

感謝您的任何幫助。

回答

3

i * 128 modulo 256是藍色值。如果i是奇數,那麼i * 128模256是128,一箇中等藍色。如果i是偶數,那麼i * 128 modulo 256是0,沒有藍色分量。如果i爲21(i * 128/256),則綠色部件爲10,如果i爲22或23則爲11,並且幾乎爲黑色。這裏的結果值不夠高,不足以「溢出」並創建一個紅色組件;在這裏爲i值爲21或23.

0

藍色值爲0到255,一旦你高於255你開始設置綠色。 rgb值是以整數編碼的字節,因此整數的第一個字節未使用,第二個字節爲紅色,第三個綠色和第四個藍色。您可能會發現移動字節值而不是乘數來移動字節更容易。