Re: GetPixelの戻り値について ( No.8 )
日時: 2007/02/08 14:04
名前: 管理人

 TKSZさん始めまして、DXライブラリの管理人です。

 非公開の関数に

// 画面モードに対応した色データ値から個々の3原色データを抜き出す
int GetColor2( int Color, int *Red, int *Green, int *Blue ) ;

 という関数があります。
 こちらの関数の第一引数に GetPixel の戻り値のカラーコードを渡すと、
Red Green Blue でアドレスを渡した変数に0〜255の値が格納されます。

int color, r, g, b;

color = GetPixel( 0, 0 );
GetColor2( color, &r, &g, &b );

 ただ、画面モードが16ビットカラーの場合、RGBの各色の解像度は
32段階(Gだけ64段階)となり、画像ファイルでの色の値とは微妙に
異なる値になりますので注意してください。(最大で±8の誤差が発生します)

例:
 画像ファイル時
  R=254 G=125 B=59

 16ビットカラー画面のGetPixel+GetColor2時
  R=255 G=125 B=57


> wizさん、SweetBlackさん
 DXライブラリでは

16bitカラー画面 R5G6B5 又は X1R5G5B5 (大抵R5G6B5ですが、どちらになるかはデバイスドライバ次第です)
32bitカラー画面 X8R8G8B8

 となっています。