windows程式設計 載入點陣圖圖片
阿新 • • 發佈:2018-12-14
現在網上隨便下個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); }
程式碼執行結果
視窗最大化