//图片加载有两种方法: 1.对话框ID加载 2. 在文件中加载
一. 使用内存兼容DC来绘制图片
1. 申请资源:
PAINTSTRUCT ps;
BeginPaint(hWnd , &ps);
2. 获取画布: HDC hClientDC = GetDC(hWnd);
3. 加载位图,得到位图句柄:
HBITMAP hBitmap = LoadBitmap(g_hIns ,MAKEINTRESOURCE(IDB_BITMAP1));
4. 获取位图的宽和高: BITMAP bitmapInfo = { 0 };
GetObject(hBitmap ,sizeof(BITMAP),&bitmapInfo);
5. 创建内存兼容DC: HDC hMemDC = CreateCompatibleDC(hClientDC);
6. 将位图选入到内存兼容DC中(这样图片就被绘制在内存中了):
SelectObject(hMemDC , hBitmap);
7. 绘制图片到窗口上<BitBlt函数等比拷贝 or StretchBlt函数进行拉伸拷贝>:
// 获取客户区大小
RECT rt;
GetClientRect(hWnd , &rt);
// 将内存兼容DC的内容等比拷贝到窗口DC中
BitBlt(hClientDC,0, 0,rt.right, rt.bottom,hMemDC,0,0,SRCCOPY <SRCINERT 异或后贴入>); //
8. 结束绘图: EndPaint(hWnd , &ps);
二. 使用位图画刷来绘制图片
1. 申请资源:
PAINTSTRUCT ps;
BeginPaint(hWnd , &ps);
2. 获取画布: HDC hClientDC = GetDC(hWnd);
3. 从文件中加载位图:
HBITMAP hbitmap2 =
(HBITMAP)LoadImage( g_hIns ,
_T( "2.bmp" ) ,/*图片的路径*/
IMAGE_BITMAP ,/*图片的类型*/
0 , 0 ,/*图片的宽和高*/
LR_DEFAULTSIZE | LR_LOADFROMFILE/*使用文件路径,并且使用图片默认大小*/
);
4. 创建位图画刷: HBRUSH hBrushBitmap = CreatePatternBrush(hbitmap2);
5. 选入一个透明画笔(这样图片就不会有其它颜色的边框):
SelectObject(hClientDC , GetStockObject(NULL_PEN));
6. 将画刷选入到DC中: SelectObject(hClientDC , hBrushBitmap);
7. 画矩形(使用位图画刷来填充矩形内部): Rectangle(hClientDC , 20 , 20 , 250 , 250);
8. 结束绘图: EndPaint(hWnd , &ps);