0

伙计们。

我一直在研究一些代码,它涉及到绘制像素。我遇到了以下代码:

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

我似乎无法理解的是:当i为奇数时,像素被绘制为蓝色;当是偶数时,它们被画成黑色。我读过关于rgb = 65536 * r + 256 * g + b的内容,但我未能将这个问题纳入这个逻辑。例如,为什么 2688 (21 * 128) 和 2816 (23 * 128) 会绘制蓝色像素,而 2816 (22 * 128) 会绘制黑色像素?

谢谢你的帮助。

4

2 回答 2

3

i * 128模 256 是蓝色值。如果i是奇数,则i * 128模 256 为 128,即中等蓝色。如果i是偶数,则i * 128模 256 为 0,没有蓝色分量。i如果是 21 ( i * 128 / 256),这里的绿色分量是 10 ,如果i是 22 或 23 并且几乎是黑色,则为 11。这里的结果值不足以“溢出”并创建红色组件;i对于21 或 23 的值,此处为 0 。

于 2013-03-26T00:00:15.010 回答
0

蓝色值是 0 到 255,一旦超过 255,就开始设置绿色。rgb 值是以整数编码的字节,因此整数的第一个字节未使用,第二个字节为红色,第三个为绿色,第四个为蓝色。您可能会发现移动字节值比将数字乘以向上移动字节更容易。

于 2013-03-26T00:11:43.540 回答