win32 api で ビットマップを複製する方法が分からない

恥さらしな話であるが。

win32apiを使ってビットマップを複製する方法がどうも分からない。
思えばGDIまわりを使ったプログラムなんて作ったことがなかった。

やりたいのは、リソースファイルからビットマップを読み込んで、その色反転したビットマップを別に作成するという作業。
ビットマップの読み込みまではできるが、どうすれば色を反転させて複製できるのか分からない。
BitBlt系のapiを使えばどうにかなりそうだが、このapiの引数はビットマップのハンドルではなく、デバイスコンテキストなのだ。

試行錯誤の結果、
ビットマップをリソースからロード
CreateCompatibleDC(NULL)でデバイスコンテキスト(その1)を作成
SelectObjectでデバイスコンテキスト(その1)で元のビットマップを選択
CreateCompatbleBitmapで元のビットマップと互換性のある新しいビットマップを作成
CreateCompatibleDCでデバイスコンテキスト(その2)作成
SelectObjectでデバイスコンテキスト(その2)で新しいビットマップを選択
BitBltでデバイスコンテキスト(その1)のビットマップを反転させながらデバイスコンテキスト(その2)に転送
デバイスコンテキスト(その2)を削除
デバイスコンテキスト(その1)を削除
以上の手順で欲しい結果を得ることができた。

しかし、これが本当に正しい(定石という意味で)のかどうかよく分からない。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック