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);
}

 

代碼運行結果

窗口最大化

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM