|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本人不算新手,但是问我很多编程术语我还是一脸懵,我的学习方法是从编程例子中找出相关知识来。
我学win32不是学着玩的,我有方向的学,所以每次都可以很快的找到我想要的知识,最近却因为一些东西卡住了。
我想做一款游戏,想要用win32来做,但是我发现我对位图操作一点都不了解,
当我要绘制多张位图的时候,我现在所学的知识来实现的话,就是load多张图片,然后轮流显示,
但是这样有个弊病,就是当我绘制背景图的时候,前景图会被消除(不懂术语),然后再绘制前景图,这样会导致前景图不断闪烁,
所以我想问问小甲鱼,我怎样才能把绘制过程放在幕后,再把绘制结果直接bitblt到设备环境里面呢?
为此我已经花费了两个月时间,求解答,谢谢。
static HBITMAP orgBitmap, oldBitmap;
static BITMAP bitmap;
static HDC hdc, hdcMem;
switch (message)
{
case WM_CREATE:
orgBitmap = (HBITMAP)LoadImage(NULL, TEXT("resource\\manber.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
GetObject(orgBitmap, sizeof(BITMAP), &bitmap);
hdc = GetDC(hwnd);
hdcMem = CreateCompatibleDC(hdc);
oldBitmap = (HBITMAP)SelectObject(hdcMem, orgBitmap);
return 0;
case WM_PAINT:
TransparentBlt
(
hdc, 0, 0, bitmap.bmWidth*2, bitmap.bmHeight*2,
hdcMem, 0, 0, bitmap.bmWidth, bitmap.bmHeight,
RGB(255,255,255));
return 0;
case WM_ERASEBKGND:
return 0;
case WM_DESTROY:
SelectObject(hdcMem, oldBitmap);
DeleteDC(hdcMem);
ReleaseDC(hwnd, hdc);
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
} |
|