
关于GDI下使用双缓冲,但是图片显示不出来,求教
如题,我是WIN32项目,练习使用双缓冲显示图片。显示部分代码如下HBITMAPhbitmap;HBITMAPtemp_bitmap;HDCdc;//屏幕DCHDCtem...
如题,我是WIN32项目,练习使用双缓冲显示图片。
显示部分代码如下
HBITMAP hbitmap;
HBITMAP temp_bitmap ;
HDC dc;//屏幕DC
HDC temp_dc;//缓冲DC
HDC pic_dc;//图片DC
temp_bitmap=CreateCompatibleBitmap(PlatForm::instance()->GetHDC(),win.right-win.left,win.bottom-win.top);
SelectObject(PlatForm::instance()->Get_temp_dc(),temp_bitmap);
hbitmap=(HBITMAP)LoadImage(NULL,"BG_6.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
GetObject(hbitmap,sizeof(BITMAP),&bitmap);
SelectObject(pic_dc,hbitmap);
BitBlt(temp_dc,0,0,bitmap.bmWidth,bitmap.bmHeight,pic_dc,0,0,SRCCOPY);
BitBlt(dc,0,0,win.right-win.left,win.bottom-win.top,pic_dc,0,0,SRCCOPY);
但是从缓冲DC绘制到屏幕上就出不来呢。去掉最下面那句,直接绘制到屏幕就能显示出来,请教 展开
显示部分代码如下
HBITMAP hbitmap;
HBITMAP temp_bitmap ;
HDC dc;//屏幕DC
HDC temp_dc;//缓冲DC
HDC pic_dc;//图片DC
temp_bitmap=CreateCompatibleBitmap(PlatForm::instance()->GetHDC(),win.right-win.left,win.bottom-win.top);
SelectObject(PlatForm::instance()->Get_temp_dc(),temp_bitmap);
hbitmap=(HBITMAP)LoadImage(NULL,"BG_6.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
GetObject(hbitmap,sizeof(BITMAP),&bitmap);
SelectObject(pic_dc,hbitmap);
BitBlt(temp_dc,0,0,bitmap.bmWidth,bitmap.bmHeight,pic_dc,0,0,SRCCOPY);
BitBlt(dc,0,0,win.right-win.left,win.bottom-win.top,pic_dc,0,0,SRCCOPY);
但是从缓冲DC绘制到屏幕上就出不来呢。去掉最下面那句,直接绘制到屏幕就能显示出来,请教 展开
1个回答
展开全部
双缓冲 要调
BOOL WINAPI SwapBuffers( HDC hdc );
交换前后景。
通常,背景上绘图,前景显示,用于动态画图。
BOOL WINAPI SwapBuffers( HDC hdc );
交换前后景。
通常,背景上绘图,前景显示,用于动态画图。
追问
我对双缓冲的理解就是利用2个DC。先 把图片绘制到缓冲DC,然后再通过缓冲DC绘制到屏幕DC上,所以实现上我用了 2个BitBlt,不知道是不是实现有问题,图片就是初不来,还有请问下你说的那个函数,如何使用呢、?何时使用呢?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询