win32開發(繪製bitmap)

2021-08-13 20:35:51 字數 1271 閱讀 1419

win32平台支援直接繪製bitmap,所以同學們可以從網上直接找一張來繪製。一般來說,繪製影象分成這幾個步驟:1、建立相容上下文裝置,2、根據檔案直接建立bitmap控制代碼,3、控制代碼繫結,4、使用bitblt繪圖,5、刪除bitmap控制代碼和相容上下文裝置,

createcompatibledc

loadimage

selectobject

bitblt

deleteobject

deletedc

看上去有點複雜,我們可以弄一點真實的**來說明,

case wm_paint:

hdc hdcmem;

hbitmap hbmp;

bitmap bmp;

hdc = beginpaint(hwnd, &ps);

hdcmem = createcompatibledc(hdc);

hbmp = (hbitmap)loadimage(null, "setup.bmp", image_bitmap, 0, 0, lr_loadfromfile);

getobject(hbmp, sizeof(bmp), &bmp);

selectobject(hdcmem, hbmp);

bitblt(hdc, 0, 0, bmp.bmwidth, bmp.bmheight, hdcmem, 0, 0, srccopy);

deleteobject(hbmp);

deletedc(hdcmem);

endpaint(hwnd, &ps);

break;

這裡的是用loadimage獲取的,如果是系統的點陣圖,可以直接用loadbitmap獲取。同時注意,這裡bmp的資訊是通過getobject獲得的,它主要是在bitblt的時候使用到的。如果大家需要繪製其他的,只需要把這裡的檔案換成自己本地的bitmap檔案就可以了。那麼,如果想自己直接建立bitmap畫素進行貼圖,應該怎麼用呢?也不複雜,

createbitmap

setdibits

createcompatibledc

selectobject

bitblt

deletedc這。但是,我們可以用msdn的方法,把這些函式的意義弄明白,一步一步去做就可以了。另外,還有乙個稍微複雜一點,但是我覺得很有意義的案例就是msdn提供的乙個截圖**的範例,位址在

這。我個人覺得,這個**非常有意義,如果大家可以真正把這份**看明白了,使用win32貼圖這個基本功能也就真正掌握了。

win32繪製視窗

static int cxclient,cyclient 宣告兩個變數存放滑鼠 x,y 座標.在下面,我們為這兩項賦值時,loword lparam 代表取 lparam 的低 16 位,hiword lparam 代表取lparam 的高 16 位,在 lparam 中存放的實際就是滑鼠的位置,低...

win32 視窗繪製直線

在win32 視窗 繪製直線 測試環境 win7 64 位 vs2013 建立乙個 win32 應用程式 空專案,名稱是 hellopaintline,在專案中新增原始檔 hellopaintline.cpp 內容如下 include include include include lresult ...

在win32 視窗 繪製紅色直線

在win32 視窗 繪製紅色直線 測試環境 win7 64 位 vs2013 建立乙個 win32 應用程式 空專案,名稱是 hellopaintredline,在專案中新增原始檔 hellopaintredline.cpp 內容如下 include include include include ...