怎么用DirectDraw中显示一张位图?
我现在可以写出一个基本框架!!
就差这一块!
我现在可以写出一个基本框架!!
就差这一块!
解决方案 »
- 【求助】在MFC的pictrue控件划线问题,谢谢
- vc用ADO调用存储过程,问一个比较菜的问题:是不是每调用一次存储过程,就要CreateInstance一次?
- 请教一个VC 6.0 IDE的问题
- 如何在picture控件中动态显示图片
- 怎么把USB虚拟成COM3口?
- CView如何清屏?
- 满分讨论一个共性的问题 关于坐标 位图等等的典型问题 大家来看看
- HELP!我(vb)编写一个将要在web中被引用的OCX控件,程序怎么得到web用<param>指定的参数!
- 我要将光标的形状改成手形
- 在VC中怎样能删除已建立的类
- 求援, 请问在MAPI中,通过那些函数或属性可得到OUTLOOK XP的本机邮件账号地址(非通讯簿)。
- 是不是会经常出现在vc下能编译成功的代码在.net下不能通过编译,和在.net下编译成功拿到vc下不能成功编译的程序呢?
HBITMAP hbmp;
BITMAP bmp; hbmp=(HBITMAP)::LoadImage(GetModuleHandle(NULL),szFileName,IMAGE_BITMAP,0,0,
LR_CREATEDIBSECTION); if(!hbmp)
hbmp=(HBITMAP)::LoadImage(NULL,szFileName,IMAGE_BITMAP,0,0,
LR_LOADFROMFILE|LR_CREATEDIBSECTION);
if(!hbmp)
return -1;
::GetObject(hbmp,sizeof(bmp),&bmp);
然后创建离屏页面
HDC memhdc;
memhdc=::CreateCompatibleDC(hDC);
if(!memhdc)
return -2;
::SelectObject(memhdc,hbmp);
BOOL b=::BitBlt(hDC,0,0,m_nWidth,m_nHeight,memhdc,0,0,SRCCOPY);
::DeleteDC(memhdc);
大概就这样.详细的自己补全吧.不过速度比较慢,也可以自己写读位图的程序,windows游戏编程大师这本书上有写这种自己写的读位图程序.自己去看吧.
然后lpDD->Bit();也不好用,, 是怎么回事?
rect.top = 0;
rect.right = GetSystemMetrics(SM_CXSCREEN);
rect.bottom = GetSystemMetrics(SM_CYSCREEN);
lpDD->CreateSurface(&ddsd, &lpDDSPrimary, NULL);
DDReLoadBitmap(lpDDSPrimary, "test.bmp");
lpDDSPrimary->Blt(&rect, lpDDSPrimary, NULL, DDBLT_WAIT|DDBLT_KEYSRC ,NULL);
有什么问题吗? 为什么屏幕一闪就没了?
DDSURFACEDESC2 ddsd;
memset(&ddsd,0,sizeof(ddsd));
ddsd.dwSize=sizeof(ddsd);
ddsd.dwFlag=DDSD_CAPS;
ddsd.ddscaps.dwCaps=DDSCAPS_PRIMARYSURFACE;
lpDD->CreateSurface(&ddsd,&lpPrimarySurface,NULL);
DDReLoadBitmap(lpPrimarySurface,"test.bmp");
如果要载入到后备缓冲页面,先创建后备缓冲页面,然后载入到后备缓冲页面,道理同上。只是把blt函数放在主循环里。