• ベストアンサー

COLORREF color の反転色

を作るつもりで color^=0xffffff; として表示させてみると colorがどんな色であっても黒くなってしまいました COLORREFの構造をサイト検索してもでていなかったので rgbが8ビットづつ積み重なっている単なるintと見なして以上のようにしたのですが何が悪いのでしょうか?

  • nubou
  • お礼率62% (293/470)

質問者が選んだベストアンサー

  • ベストアンサー
  • HogePiyo
  • ベストアンサー率57% (24/42)
回答No.1

COLORREF は 32 ビット整数らしいので全ビットを XOR させたいなら、 color ^= 0xFFFFFFFF; とすべきところを color ^= 0xFFFFFF; と、1バイト分足りないからじゃないでしょうか? 以下、一応うまく行ったサンプルです。 ------------------------------------------------------------------------------- /* WM_PAINT で呼び出してください */ /*******************************************************************/ /* グラフィックの描画 */ /*******************************************************************/ static int graphicPaintProc( HWND hWnd ){ HDC hdc; PAINTSTRUCT ps; RECT rt; HBRUSH hBrush; COLORREF clrColor = RGB( 0x00, 0x00, 0x00 ); hdc = BeginPaint( hWnd, &ps ); GetClientRect( hWnd, &rt ); hBrush = CreateSolidBrush( clrColor ^= 0xFFFFFF ); FillRect( hdc, &rt, hBrush ); EndPaint( hWnd, &ps ); DeleteObject( hBrush ); return TRUE; } -------------------------------------------------------------------------------

参考URL:
http://black.sakura.ne.jp/~third/system/winapi/win18.html

その他の回答 (1)

  • HogePiyo
  • ベストアンサー率57% (24/42)
回答No.2

訂正です。 > hBrush = CreateSolidBrush( clrColor ^= 0xFFFFFF ); hBrush = CreateSolidBrush( clrColor ^= 0xFFFFFFFF ); 申し訳ないス。

nubou
質問者

お礼

ありがとうございました 3×8=24ビット だけでいいと思っていました

関連するQ&A

  • カラーについて

    いまASでのビットマップ画像の扱い方について勉強中なのですが、getPixelで返される値が8桁なのが何であるかが分からず、質問させていただきました。 これまでカラーについてはほとんどASで扱ってこなかった事もあってか、検索したいくつかのHPでも上手く理解できずに困惑中です。 これまでは頭に0xを付けて、0xFFFFFFでRGB指定、0xFFFFFFFFだとARGB指定で2行毎に色の強さを指定みたいな感じでやってきました。 getPixelで返される値はRGB値としか書籍には記載が無く、この8桁の数値が何なのかよくわかりません。とりあえずgetPixel()を引数に使用して問題なく動作はしているのですが、traceしてみてgetPixel()で返される値がなぜ6桁ではなく8桁の数値で、どういうものなのか知りたく質問書き込みさせていただきました。 この点についてご教授をいただきたく思います。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • カラーチャートの選び方

    漠然としか理解してないんですが、カラーチャートというのはRGBからCMYKへ出力するときの色見本のことですよね? しかし、あまりにも沢山販売されていて何を基準にどう選べばいいのかさっぱりわかりません。検索してもそれらしいサイトも見つからなかったのですが、一つ持っていたいので、おすすめ又は選び方やその基準を教えてください。m(_ _)m

  • 数値が同じRGBカラーが、ソフトによって違うことってありますか??

    お世話になっております。 困っております。お助け下さい。 例えば、RGB 85.0.20 のカラーをあるソフトで使っていたので、今回は同じカラーをワードで使用しようと思ったのですが・・ ワードで前述のRGB値を指定してみても、まったく違う色が表示されます。同じパソコン、同じモニターで、です。 ソフトが異なっても同じRGBやCMYK値であれば、同じ色がモニター表示されるものではないのでしょうか?? 基本的なことでしたら申し訳ございません。 ぜひ教えて頂けませんでしょうか。 よろしくお願い致します。

  • IllustratorRGBカラーをCMYKカラーにしたい

    以前このような記事を見かけました。 私も同じ事で悩んでいるのですが 最後のフィルタ→カラー→CMYKに変換 というのが出来ません。どなたかわかる方降りませんでしょうか? 友達の結婚式のチラシを作成しており、 時間がとてもありません。 要はRGBモードでしか色が出ない 薄いきれいな青・赤・緑などを使いたいのです。 CMYKカラーには使える色が少ないのは知っていますが 薄い色にすると変換されて濃い色になってしまうのです。 お願いいたします! =================== IllustratorRGBカラーをCMYKカラーにしたい http://oshiete1.goo.ne.jp/kotaeru.php3?q=352059 Illustrator10でつくったファイルですが、 RGBカラーでつくったものをCMYKカラーに変更するように言われたのですが、 どのようにしたらよいのでしょうか。 OSはWin2000です。 私はMacですが、同じでしょうか? RGBカラーで作ったデータを選択して、フィルタ→カラー→CMYKに変換でできませんか? できました! ================== ・・・私は出来ませんでした・・・

  • イラストレータの「フィルタ」、「カラー」でのカラーモード変換について。

    イラストレータの画面にデジタルカメラの写真(カラーモードはsRGB)を配置しました。この写真を選択して、「フィルタ」→「カラー」の細項目の「RGBに変換」が灰色文字で選択できなくなっています。(これは今が既にRGBなのでRGBへの変換はやりようがない、できない、という意味で、納得できます。) 【本題】 今度は、「CMYKに変換」の項目は選択できるので、それをクリックしてCMYKに変換したつもりでしたが、再度写真を選択して確認してみると、操作前と同様、「RGBに変換」は選択不可で、「CMYKに変換」は選択可能です。 ということは、「CMYKに変換」の行をクリックしたのに変換されていなかったのです。 もうひとつの現象として、変換したつもり、の後「編集」をクリックしてみても、最上段に「カラーの変換を元に戻す」旨の表示が出ていませんでした。 【質問】 どうして、RGBなのにCMYKに変換されていないのでしょうか? 「ファイル」→「書類のカラーモード」はCMYKにしてあります。 よろしくお願いします。

  • 8bitカラー、16bitカラーって?

    Windowsの画面のプロパティの設定タブのところで、16色や256色、high color(16ビット)、true color(32ビット)などと有りますが(カードによっては15bitや24bitが有ると思いますが)、15bitや24bitは3で割り切れるのですが(つまりRGBそれぞれに5bitや8bitを割り当てられると思うのですが)、16bitや32bitでは3で割り切れないのでどのようになっているのか知りたいのですが…。

  • フォトショップの文字カラーと描画カラーの違いについて

    カラーモードをCMYKで制作した場合、描画カラーと文字カラーの色が違います。 描画カラーでは鮮やかな色が表示されるのに、文字カラーではくすんだ色になってしまいます。 ブラシツールで絵を描くと、描画カラーの色ではなく、文字カラーの色でしか描く事ができません。 文字カラーの色をカラーピッカーで調整しても、いざ画面でイラストを描こうとするとくすんだ色になってしまいます。 これをRGBモードで制作したら、描画カラーと文字カラーはちゃんと同じ色が表示されます。鮮やかな色も表示されます。 ★CMYKモードの描画カラーと文字カラーを同じ色にして、カラーピッカーできちんと調整できるようにするにはどうしたらいいのでしょうか?

  • デジカメのカラー画像はどうやって作られるのですか。

    デジカメのカラー画像はどうやって作られるのですか。 知っている方は教えてください。 本によると、CCDの表面に色の三原色であるRGBのカラーフィルムが貼ってあります。光がCCDに入ると、まずRGBに分かれてメモリに覚えられます。その後、同じようなRGBカラーフィルムのある液晶画面に出力するそうです。 それで、RGBは1ドットとなり、カラーになると書いていますが、どうもRGBは重なっていないようです。 1ドットの中にあるRGBは重なっていないのにどうしてカラーにできるのですか。

  • Photoshopのカラー設定について

    WindowsXPでPhotoshopCS3を使用しています。 外部から頂いたPSDファイルを開いたときに、ファイル上部のバーに表示される内容で「ファイル名@100%(レイヤー名、RGB/8*)」となっているのですが、この「RGB/8*」の意味合いがよくわかりません。「RGB/8#」と表示されるものもあります。 新規ファイルを作ってみると「RGB/8」と表示されます。 「*」と「#」が意味するものは、カラー設定か何かの違いなのでしょうか? 「RGB/8*」と「RGB/8#」のデータを見比べてみると、同じ色で塗りつぶしてある箇所も見え方が明らかに違います。 どのようにして、設定するものなのか、どのように違うのかを誰か詳しい方がいましたら、是非知識を分けてください。 解りにくい説明になってしまったかもしれないですが、よろしくお願いいたします。

  • PhotoshopCS4とIllustratorCS4のカラーを同じにしたい

    MacOSX10.5.6でPhotoshopCS4とIllustratorCS4を使っています。 Illustratorで作った色や画像をPhotoshopへコピーペーストした時のカラーは変わらないのですが 逆にPhotoshopで作った色や画像をコピーペーストでIllustratorに持ってきたとき色が変わってしまいます。 どちらもファイルのカラーモードはRGBでカラーを作る時もRGBで作業しているのですが、、、 どちらでも色の変化が無いようにするにはどんな設定をしたら良いのか詳しい方、分かる方教えて下さい困っています!