web-dev-qa-db-ja.com

C#で整数をRGBカラーにマッピングする

したがって、現在、0から2 ^ 24までの数値があり、それを3つのRGB値にマップする必要があります。これをどのように達成するかについて少し問題があります。どんな援助も大歓迎です。

13
Evan Fosmark

できるよ

Color c = Color.FromArgb(someInt);

次に、赤、緑、青の値にそれぞれc.Rc.Gc.Bを使用します。

16
Bala R

どの色がどこにあるかに応じて、ビットシフトを使用して次のように個々の色を取得できます。

int rgb = 0x010203;
var color = Color.FromArgb((rgb >> 16) & 0xff, (rgb >> 8) & 0xff, (rgb >> 0) & 0xff);

上記の式は0x00RRGGBBを想定していますが、色は0x00BBGGRRである可能性があります。その場合は、16, 8, 0の値を変更するだけです。

これは、System.Drawing.Colorまたは独自のカラークラスの代わりにSystem.Windows.Media.Colorも使用します。それはアプリケーションによって異なります。

14
Rick Sladkey

BitConverterクラスを使用して、intからバイトを取得できます。

byte[] values = BitConverter.GetBytes(number);
if (!BitConverter.IsLittleEndian) Array.Reverse(values);

配列は4バイトになります。最初の3バイトにはあなたの番号が含まれています:

byte b = values[0];
byte g = values[1];
byte r = values[2];
3
Guffa