绘制位图的步骤:
1.从文件中加载位图(BITMAP)对象
2.建立一个与窗口DC兼容的内存DC;
3.内存DC使用步骤1建立位图对象
4.将内存dc的内容粘贴到窗口dc,显示图片
一。加载位图:
LoadImage(HINSTANCE 来源实体,LPCTSTR 名称,UNIT位图类型,int宽,int高,UNIT加载方式);
二。建立与窗口DC兼容的内存DC
HDC CreateCompatibleDC(HDC hdc);
和DC一样,建立后要释放DC
三。选用位图对象
SelectObject();
四。贴图
BOOL BitBlt(HDC 目标dc,int 目标dc x坐标,int 目标dc y坐标,int 贴到目的dc的宽度,int 高度,HDC 来源dc,int 来源dcx坐标,int 来源dc y坐标,DWORD 贴图方式);
假设建立一个内存dc为mdc,里面加载了位图,下面将mdc的位图贴图到窗口hdc
BitBlt(hdc,50,50,350,250,mdc,200,100,SRCCOP0Y);
从图片的(200,100)开始复制(350,250)的大小到窗口(50,50)的位置;
代码解释:
全局变量:
HINSTANCE hInst; // 当前实例
TCHAR szTitle[MAX_LOADSTRING]; // 标题栏文本
TCHAR szWindowClass[MAX_LOADSTRING]; // 主窗口类名
HBITMAP hbmp;//位图对象
HDC mdc;//内存dc句柄
初始化窗口函数:
if (!hWnd)
{
return FALSE;
}
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
hdc=GetDC(hWnd);
mdc=CreateCompatibleDC(hdc);
hbmp =(HBITMAP)LoadImage(NULL,_T("G:\\vc\\vc2010\\vc++game\\photo_03\\img\\haizei.bmp"),IMAGE_BITMAP,600,450,LR_LOADFROMFILE);
SelectObject(mdc,hbmp);
MyPaint(hdc);
ReleaseDC(hWnd,hdc);
return TRUE;
先获取窗口dc再创建一个与hdc兼容的内存dc
将位图加载到对象hbmp
将位图对象存到内存dc中
回调函数:
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: 在此添加任意绘图代码...
MyPaint(hdc);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
DeleteDC(mdc);
DeleteObject(hbmp);
PostQuitMessage(0);
break;
MyPaint:
void MyPaint(HDC hdc)
{
BitBlt(hdc,0,0,640,450,mdc,0,0,SRCCOPY);
}
![](http://hi.csdn.net/attachment/201203/21/0_13323190721XFX.gif)