トップページ > 過去ログ > 記事閲覧
色取得に関して
名前:初心者3 日時: 2007/12/15 12:53

GetPixelを使用して画像の16進での色データ値を得ることは出来ますが、 どうにかして10進でのR値、B値、G値を個別に得ることは出来ないでしょうか?

Page: 1 |

Re: 色取得に関して ( No.1 )
名前:ライブラリ使用者 日時:2007/12/15 13:55

16進で取得した値から GetRValue(COLORREF):赤 GetGValue(COLORREF):緑 GetBValue(COLORREF):青 でいけないでしょうか?
Re: 色取得に関して ( No.2 )
名前:初心者3 日時:2007/12/15 14:04

無事RGB値を出すことが出来ました 本当にありがとうございました!
Re: 色取得に関して ( No.3 )
名前:管理人 日時:2007/12/16 18:01

 GetRValue, GetGValue, GetBValue はフルカラー(24bitカラー or 32bitカラー) が前提ですので、画面の色ビット深度が16bitカラーの時には16bitカラーの値が 返ってくる GetPixel の戻り値を GetRValue 等の API に渡しても正常な値を 取得することが出来ません。  なので、GetPixel で取得した色値からR,G,Bの値を取得する場合はこちらの 関数をお使いください。 // 画面モードに対応した色値から3原色の値を抜き出す int GetColor2( int Color, int *Red, int *Green, int *Blue ) ;  ただ、Red,Green,Blue に格納される値は常に 0〜255 の256段階(8bit)ですが、 画面モードが16bitカラーモードの場合は元々 R:0〜31(5bit) G:0〜63(6bit) B:0〜31(5bit) のビット深度しかないもの無理やり 0〜255 に引き伸ばして いますので、取得した色を比較処理を行う場合は if( r >= 120 && r <= 128 ) の ように、少し値に幅を持たせて判断する必要があります。

Page: 1 |