1. 程式人生 > >windows程式設計 載入點陣圖圖片

windows程式設計 載入點陣圖圖片

 

 

 

 

 

 

現在網上隨便下個jpg圖片,用windows自帶的畫圖工具開啟,點選畫圖工具左上角,檔案->另存為->選擇bmp,點選儲存,儲存好後,就得到一張點陣圖了。

得到的點陣圖,點陣圖的記憶體比原圖片jpg佔用記憶體大。

將點陣圖新增到vs2012專案裡面。滑鼠右鍵專案名稱->新增->資源。

選擇Bitmap->匯入,選擇剛才你做好的*.bmp點陣圖圖片。

匯入的點陣圖,在專案的資源中可以看到。

在resource.h資源標頭檔案中會突出一個巨集定義,我的是IDB_BITMAP7。

然後在程式碼中載入點陣圖。然後與相容dc繫結,在把相容dc上的內容顯示到視窗dc上面。下面程式碼。

LRESULT CALLBACK fnWndProc(HWND hWnd, UINT mSg, WPARAM wParam, LPARAM lParam){

    static HBITMAP hBitmap;
    static int cxClient, cyClient;

    HDC hdc, hdcMem;
    HINSTANCE hInstance;
    PAINTSTRUCT ps;

    switch(mSg){
    case WM_CREATE:
        hInstance 
= ((LPCREATESTRUCT)lParam)->hInstance;//獲取視窗例項控制代碼 hBitmap = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP7));//載入點陣圖 break; case WM_SIZE://視窗大小改變的訊息 cxClient = LOWORD(lParam);//視窗顯示寬度 cyClient = HIWORD(lParam);//視窗顯示高度 break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); hdcMem
= (HDC)CreateCompatibleDC(hdc);//建立相容性DC SelectObject(hdcMem, hBitmap);//將點陣圖和相容性DC繫結 BitBlt(hdc, 0, 0, cxClient, cyClient, hdcMem, 0, 0, SRCCOPY);//將相容DC的內容複製到hdc上面,也就是顯示的視窗上。 DeleteObject(hdcMem);//刪除相容性DC EndPaint(hWnd, &ps); break; case WM_DESTROY: DeleteObject(hBitmap);//刪除點陣圖 PostQuitMessage(0); break; } return DefWindowProc(hWnd, mSg, wParam, lParam); }

 

程式碼執行結果

視窗最大化