0

彼ら。

私はいくつかのコードを研究してきました、そしてそれはピクセルを描くことを含みます。私は次のコードに出くわしました:

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

私が理解できないように見えるのは、が奇数の場合、ピクセルは青で描かれているということです。が偶数のとき、彼らは黒で描かれています。rgb = 65536 * r + 256 * g + bについて読みましたが、この問題をこのロジックに適合させることができませんでした。たとえば、2868(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であり、青の成分はありません。ここでの緑色の成分は、 i21(i * 128 / 256)の場合iは10、22または23の場合は11で、ほぼ黒色です。ここでの結果の値は、「こぼれて」赤いコンポーネントを作成するのに十分な高さではありません。i21または23の値の場合、ここでは0です。

于 2013-03-26T00:00:15.010 に答える
0

青の値は0〜255で、255を超えると、緑の設定を開始します。rgb値は整数でエンコードされたバイトであるため、整数の最初のバイトは未使用で、2番目のバイトは赤、3番目は緑、4番目は青です。数値を乗算してバイトを上に移動するよりも、バイト値をシフトする方が簡単な場合があります。

于 2013-03-26T00:11:43.540 に答える