人
我一直在研究一些代码,它涉及绘制像素。我来自以下代码:
pixels[x + y * width] = i * 128;
我似乎无法理解的是:当 i 为奇数时,像素以蓝色绘制;当我是偶数时,它们会被画成黑色。我已经读过 rgb = 65536 * r + 256 * g + b ,但我没有将这个问题纳入这个逻辑。例如,为什么2688(21 * 128)和2816(23 * 128)绘制蓝色像素而2816(22 * 128)绘制黑色?
感谢您的帮助。
答案 0 :(得分: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。
答案 1 :(得分:0)
蓝色值为0到255,一旦超过255,就开始设置绿色。 rgb值是以整数编码的字节,因此整数的第一个字节未使用,第二个字节为红色,第三个为绿色,第四个为蓝色。你可能会发现更容易移位字节值而不是乘以数字来将它们移动到字节上。