掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
GetNearestColorで純色を取得する (ID:69260)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
こんにちは。 GetNearestColorというWin32のAPI関数を使おうとしています。 (APIのみ使用) この関数は、引数で指定した色について、 ・画面で正しく発色できる場合はそのまま ・画面で発色できない色の場合は発色可能な近い色に変換して 返してくれるものと考えています。 そこで、ためしに画面をハイカラー(65k色)にした状態で、 HDC hDC = GetDC( NULL ); for( int i = 0; i < 255; i++ ) { COLORREF clrA = RGB( 0, 0, i ); COLORREF clrB = GetNearestColor( hDC, clrA ); _ASSERT( clrA == clrB ); // 発色できない色の場合、捕えてほしい } ReleaseDC( NULL, hDC ); としたところ、ASSERTされませんでした。 ハイカラーなので青を256段階フルには表現できないはずだ(だから、 どこかのタイミングでASSERTされるだろう)と期待したのですが、 何かAPI関数の理解が間違っているのでしょうか? それならばと、ためしに、 HDC hDC = GetDC( NULL ); for( int i = 0; i < 255; i++ ) { COLORREF clrA = RGB( 0, 0, i ); COLORREF clrB = GetNearestColor( hDC, clrA ); _ASSERT( clrA == clrB ); SetPixel( hDC, 0, 0, clrB ); // 実際にピクセルをプロットしてみる COLORREF clrC = GetPixel( hDC, 0, 0 ); // プロットした結果を取得 _ASSERT( clrB == clrC ); } ReleaseDC( NULL, hDC ); とすると、iの値によってはGetPixelの次でASSERTされてしまいました。 たぶん私の理解がどこかで間違っているのだろうと思いますが、 問題点をご教授いただけませんでしょうか? よろしくお願いします。 #ビデオカードはIntel 965のオンボードビデオ。最新ドライバです。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.