我現在知道一個BITMAP結構,想寫到一個內存DC中,使用下面的代碼行嗎:
BITMAP CurrentBitmap;//結構已知
BITMAP* pBM=&CurrentBitmap;
HDC hMemDC;
HBITMAP hBM;
hMemDC=CreateCompatibleDC(::GetDC(NULL));
hBM=CreateBitmapIndirect(pBM);
SelectObject(hMemDC,hBM);
如果不行,可以通過什么方法實現?謝謝
8 个解决方案
LZ的代碼可能成功,也可能失敗,有一個前提:CurrentBitmap結構體中bmBits指向像素數據的指針不能為空。一般通過CBitmap::GetBitmap得到的bmBits值是空的。所以上面的代碼會運行失敗。
需要經過一些附加代碼:
CBitmap map;
map.LoadBitmap(IDB_BITMAP1);
BITMAP CurrentBitmap;//結構已知
map.GetBitmap(&CurrentBitmap);
DWORD dwCount = CurrentBitmap.bmWidthBytes*CurrentBitmap.bmHeight;
BYTE* bits = new BYTE[dwCount];
map.GetBitmapBits(dwCount,bits);
CurrentBitmap.bmBits = bits;
使用完bits,別忘記delete []bits;
謝謝了
我想在兩個進程間通過文件映射的方式傳遞圖像信息,在另一個進程中可以顯示這個圖像,請問我該以什么格式傳輸圖像信息?因為對圖像編程不怎么了解,還請你多多指教。
我怎么樣可以把這個圖像的bmBits指向的數據傳過去呢
to fengrx:
學習了,也遇到同樣問題
但是“像素數據”該怎么樣傳遞呢?進程之間能不能直接傳遞指針呢?數據該怎么拷貝到指定的內存中呢?又怎么樣獲取呢?