先讲一下LoadBitmap的用法,代码如下:
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd,&ps);
HDC hMemDC = CreateCompatibleDC(hdc);
HBITMAP hBitmap = LoadBitmap(g\_hIntance,MAKEINTRESOURCE(IDB\_BITMAP1));
HBITMAP hOldBitmap = (HBITMAP)SelectObject(hMemDC,hBitmap);
//把HBITMAP转换成BITMAP,从而获取位图的宽高。
BITMAP bmp;
GetObject(hBitmap, sizeof(BITMAP), &bmp);
BitBlt(hdc,,,bmp.bmWidth,bmp.bmHeight,hMemDC,,,SRCCOPY);
SelectObject(hMemDC,hOldBitmap);
DeleteObject(hBitmap);
DeleteDC(hMemDC);
EndPaint(hwnd,&ps);
BitBlt的作用是把hMemDC上的内容拷贝到hdc上,不进行缩放,但是可以位移。
如果想要缩放,可以使用StretchBlt,以下这个例子比较有趣,是把整个屏幕绘制到窗口中。
PAINTSTRUCT ps;
HDC hdcClient = BeginPaint(hwnd, &ps);
HDC hdcScreen = CreateDC(TEXT("DISPLAY"), NULL, NULL, NULL);
RECT rtClient;
int scrWidth = GetSystemMetrics(SM\_CXSCREEN);
int scrHeight = GetSystemMetrics(SM\_CYSCREEN);
GetClientRect(hwnd,&rtClient);
StretchBlt(hdcClient,,,rtClient.right,rtClient.bottom,
hdcScreen,,,scrWidth,scrHeight,SRCCOPY);
DeleteDC(hdcScreen);
EndPaint(hwnd, &ps);
手机扫一扫
移动阅读更方便
你可能感兴趣的文章