當前位置:編程學習大全網 - 源碼下載 - 如何用C語言顯示bmp,想要壹個完整正確的程序,急!

如何用C語言顯示bmp,想要壹個完整正確的程序,急!

lz?妳好

c語言需要win32 api來顯示bmp位圖,如下:

布爾?BitBlt(

HDC?hdcDest,?//?目標設備環境中的位圖顯示

int?nXDest,//?在客戶區顯示的位圖的x坐標。

int?nYDest,//?客戶區顯示的位圖的y坐標。

int?nWidth,//?位圖顯示的寬度

int?高度呢?//?位圖顯示的長度

HDC?hdcSrc,//?源設備環境(包括要顯示的bmp位圖)

int?nXSrc,?//?當前位圖中顯示的起始x位置。

int?nYSrc?//?當前位圖中顯示的起始y位置。

DWORD?dwRop//?映射模式

);以下是源代碼:

//顯示bmp位圖

# include & ltwindows.h & gt

#包含“resource.h”

LRESULT?回調?WndProc(HWND,UINT?WPARAM,?LPARAM);

作廢?draw brick();?

int?WINAPI?WinMain(hin instance?hInstance,

?HINSTANCE?hPrevInstance,

PSTR?szCmdLine

?int?iCmdShow)

{

staticTCHARszAppName[]?=?TEXT(" Bmp ");

HWNDhwnd

MSGmsg

WNDCLASSwndclass

wndclass.style =?CS_HREDRAW?|?CS _ VREDRAW

wndclass.lpfnWndProc =?WndProc

wndclass.cbClsExtra =?0;

wndclass.cbWndExtra =?0;

wnd class . h instance =?hInstance

wndclass.hIcon =?LoadIcon(NULL,IDI _應用);

wnd class . h cursor =?LoadCursor(NULL,IDC _ ARROW);

wnd class . HBR background =?(HBRUSH)GetStockObject(WHITE _ BRUSH);

wndclass.lpszMenuName =?NULL

wnd class . lpsz class name =?szAppName

如果(!register class(& amp;wndclass))

{

MessageBox(NULL,正文(“這個?程序?要求?Windows?NT!”),

szAppName,?MB _ icon error);

回歸?0;

}

hwnd?=?CreateWindow(szAppName,

正文(" Bmp?Demo”),

WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT,

CW_USEDEFAULT,

754,

566,

空,

空,

hInstance,

NULL);

顯示窗口(hwnd,icmd show);

更新窗口(hwnd);

while(GetMessage(& amp;味精,?NULL,?0,?0))

{

翻譯消息(& amp味精);

dispatch message(amp;味精);

}

回歸?msg.wParam

}

LRESULT?回調?WndProc(HWND?hwnd,?UINT?消息,?WPARAM?wParam,?LPARAM?lParam)

{

staticHBITMAPhBitmap//位圖句柄表示位圖。

靜電?intcxBitmap,?cyBitmap//位圖的長度和寬度

BITMAPbitmap

HDChdc,?hdcMem

HINSTANCEhInstance

PAINTSTRUCTps

開關(消息)

{

案子?WM_CREATE:

hInstance?=?((LPCREATESTRUCT)lParam)-& gt;hInstance//獲取窗口的實例句柄

hBitmap?=?LoadBitmap(hInstance,MAKEINTRESOURCE(IDB _ bitmap 1));//將位圖加載到內存

GetObject(hBitmap,sizeof(位圖),?& amp位圖);

cxBitmap?=?bitmap . BM width;//獲取位圖的長度

cyBitmap?=?bitmap . BM height;//獲取位圖的寬度

回歸?0?;

案子?WM_PAINT:

hdc?=?BeginPaint(hwnd,& ampPS);

hdcMem?=?CreateCompatibleDC(hdc);//創建壹個兼容HDC設備環境描述表的hdcMEM,主要用於在內存中截圖。

SelectObject(hdcMem,hbit map);?//選擇位圖放入hdcMem。

BitBlt(hdc,?-1,?-1,?cxBitmap,?cyBitmap,?hdcMem,?0,?0,?src copy);//繪制bmp位圖

DeleteDC(hdc mem);

EndPaint(hwnd,& ampPS);

回歸?0;

案子?WM_DESTROY:

delete object(hbit map);

PostQuitMessage(0);

回歸?0;

}

回歸?DefWindowProc(hwnd,消息,?wParam,?lParam);

}程序運行效果:

希望能幫到妳。

ps:

附件是整個項目,壹個用vs2008創建的項目,包含相應的資源。

  • 上一篇:聊天不充值免費社交軟件。
  • 下一篇:AIOT迎來冰火兩重天,聚集行業大咖破解發展困局
  • copyright 2024編程學習大全網