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
となっています。
|
|