ビットマップをメモリ上でコピーするには? – プログラミング – Home

ビットマップをメモリ上でコピーするには...
 
通知
すべてクリア

ビットマップをメモリ上でコピーするには?


LEON
 LEON
(@LEON)
ゲスト
結合: 23年前
投稿: 7
Topic starter  

お久しぶりです。LEONです。

現在、ビットマップを読み込んでいろいろ編集するソフトを作成しています。
ビットマップの読み込みはできたのですが、ビットマップをメモリ上でコピーする方法が
分かりません。
CBitmapオブジェクトやBITMAPINFOHEADER構造体の変数は作ったもののデバイスをどう扱うか
など、分からないことだらけです。
ちなみに読み込んだビットマップを、BitBlt()を利用して編集できるようにしたいのですが、
BitBltもいまいち理解不足ですので、関連して教えていただけたら有り難いです。

どなたか詳しい方教えてください。
よろしくお願いします。


引用解決済
トピックタグ
kokin
 kokin
(@kokin)
ゲスト
結合: 23年前
投稿: 7
 

ピクセルデータを読み込んでるならば私は次のように処理します。
MFCは良くわからないので、SDKで書いてしまいます。すいません。

HWND hWnd;//描画させたいウィンドウのハンドル

HDC hDC = GetDC(hWnd);//描画先のデバイスコンテキスト
HDC memDC = CreateCompatibleDC(hDC);//メモリデバイスコンテキスト。
HBITMAP hbmp = CreateCompatibleBitmap(hDC,希望の幅,同高さ);
HBITMAP old = (HBITMAP)SelectObject(memDC,hbmp);

SetDIBits(引数たくさんあるので省略);

BitBlt(同省略);

SelectObject(memDC,old);//選択したら元のオブジェクトに必ず戻します。
ReleaseDC(hDC,hWnd);//これも必ず開放します。
DeleteDC(hbmp);//必要なくなったオブジェクトは削除します。

以上ですがBitBltの何がわからないのでしょうか?
デバイスコンテキストの概念(?)ですか?
世間ではよくデバイスの画材と、画用紙だといわれてます。
上の例ではhbmpが画用紙で色のデータをもったピクセルデータが
画材にあたるかと思います。
お役に立つことを祈ってます.


返信引用
LEON
 LEON
(@LEON)
ゲスト
結合: 23年前
投稿: 7
Topic starter  

すみません。勉強不足なもので・・・もう一つ教えていただけないでしょうか?
BitBlt後のビットマップの画像情報が欲しいのですがどのようにすれば取得できるでしょう
か?
具体的にはBitBlt後にビットマップのバイトデータを取得したいのですが・・・。

よろしくお願いします。


返信引用
kokin
 kokin
(@kokin)
ゲスト
結合: 23年前
投稿: 7
 

こんちは。描画は上手く出来ましたか?
適当に書いたんで自信なかったのですが・・・

>BitBlt後のビットマップの画像情報が欲しいのですがどのようにすれば取得できるでしょう
>か?

? BitBltで転送したなら描画先も描画もとも同じ画像同じピクセルデータのような気がします
が。

+------------------+
| | +----+
| A | | B |
| | +----+
| |
| |
| |
+------------------+

BをAにBitBltしてほしいのは転送後のAのピクセルデータ、みたいなことでしょうか?
もしそうならAを選択したメモリデバイスコンテキストがあるはずですから
それをmemDC_Aとしたらそれを使ってGetDIBitsでピクセルデータが取り出せる
と思います。

全く関係なかったらすいません。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました