VC++ 双缓冲引起的血案

来源:百度知道 编辑:UC知道 时间:2024/06/15 00:59:51
我有两幅BMP位图在本目录下。一张大的位图photo1.bmp(800×600),一张小的位图photo2.bmp(100×80)。我想要把小的覆盖在大的上面并显示(这个循环要执行很多次)。我过去是先直接显示大的,再显示小的。但我发现这样画面抖动而且电脑慢时可以看出是先画大的再画小的,导致画面质量很差。
请问各位高手能不能提供一段可以读入这两张位图并在内存中合成好以后再显示的代码?
谢谢
//………………………………………………
hdc = GetDC(hWnd);
mdc = CreateCompatibleDC(hdc);
//读入地图(我把800×600的地图分成4块读入,每块400×300):
bmp1 = (HBITMAP)LoadImage(NULL,"map1.bmp",IMAGE_BITMAP,400,300,LR_LOADFROMFILE);
SelectObject(mdc1,bmp1);
bmp2 = (HBITMAP)LoadImage(NULL,"map2.bmp",IMAGE_BITMAP,400,300,LR_LOADFROMFILE);
SelectObject(mdc2,bmp2);
bmp3 = (HBITMAP)LoadImage(NULL,"map3.bmp",IMAGE_BITMAP,400,300,LR_LOADFROMFILE);
SelectObject(mdc3,bmp3);
bmp4 = (HBITMAP)LoadImage(NULL,"map4.bmp",IMAGE_BITMAP,400,300,LR_LOADFROMFILE);
SelectObject(mdc4,bmp4);
//读入任务形象:
bmp5 = (HBITMAP)LoadImage(NULL,"character.bmp",IMAGE_BITMAP,200,200,LR_LOADFROMFILE);
Se

读入photo1.bmp到内存buffer1
读入photo2.bmp到内存buffer2

显示buffer

复制buffer1到buffer
按照坐标复制buffer2到buffer中某处

复制buffer到实际显示缓存

前面不管你怎么画,都是画在buffer上,最后显示时buffer到显示缓存

你用啥画的啊?GDI?DirectX?OpenGL?