看板 C_and_CPP 關於我們 聯絡資訊
現在做法是這樣: HBITMAP hbitmap; BITMAPINFO* bmI; BITMAPINFOHEADER* bmIH; : hbitmap = CreateDIBSection( memDC.GetSafeHdc(), bmI, DIB_RGB_COLORS, (void**)&pRenderData, 0, 0); 接下來就selectObject..等 這是沒有問題的 但CreateDIBSection會自己開一塊記憶體,不是很好 想自己管理這塊,請問要怎作呢? 試了 winWidth = bmIH->biWidth ; winHeight = -winHeight; pRenderData = (char*)malloc(winWidth*winHeight*PIXELSIZE3); memset(pRenderData, 100, winWidth*winHeight*PIXELSIZE3); hbitmap = CreateDIBitmap( memDC.GetSafeHdc(), bmIH, CBM_INIT, pRenderData, bmI, DIB_RGB_COLORS); SetDIBits( memDC.GetSafeHdc(), hbitmap, 0, winHeight, pRenderData, bmI, DIB_RGB_COLORS); 圖還是全黑的啊。 那請問要怎修改才能讓圖正常顯示呢? 謝謝 。。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.158.204
uziel:如果我對 MSDN 的說明沒有理解錯誤的話, programmer 應該是 01/13 21:42
uziel:沒有辦法自行宣告 HBITMAP 所要用的記憶體,我們能做的頂多 01/13 21:43
uziel:是在產生 bitmap 的同時根據另一塊記憶體 (bits) 來初始化 01/13 21:47
uziel:這個 bitmap 以形成所想要的圖,CreateDIBitmap 即是此類 01/13 21:49
uziel:函數的其中之一,其第四個參數就是用來初始化 bitmap 的資料 01/13 21:51
uziel:此外,用來初始化 bitmap 的資料其格式跟第五個參數有關, 01/13 21:57
uziel:不是直接 長 * 寬 * 色彩深度 就行了,而且還有對齊 WORD 01/13 22:00
uziel:資料寬度的規則,建議還是去看看 MSDN 的說明。 01/13 22:01