首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

贴图有关问题

2012-03-23 
贴图问题! - C++ Builder / Windows SDK/APIvoid MainLoop (void){static int i 0HDC hdc ddBltFxOne.

贴图问题! - C++ Builder / Windows SDK/API
void MainLoop (void)
{
static int i = 0; 
HDC hdc ; 
ddBltFxOne.dwSize = sizeof(DDBLTFX);//申请空间 
ddBltFxOne.dwFillColor = RGB(0+i,0+i,0+i);

MakeRect (200, 200, 400, 400);
lpDDSBack -> Blt(NULL, NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &ddBltFxOne);
DDReLoadBitmap(lpDDSBack,"BKGND.BMP");
DDSetColorKey(lpDDSBack,RGB(0,255,0)); 

lpDDSPic = DDLoadBitmap ( lpDD, "CENTER.BMP", 50, 60 ) ;
DDSetColorKey(lpDDSPic,RGB(0,0,0));
lpDDSBack->BltFast( 275, 175, lpDDSPic, &rect, DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT); 

if ( lpDDSBack->GetDC(&hdc)==DD_OK ){
//SetBkColor ( hdc, RGB(0+i,255-i,0+i) ) ; 
//SetTextColor ( hdc, RGB( 0+i,0+i,255-i) ) ;
TextOut ( hdc, 220, 200, szMsg1, lstrlen(szMsg1) ) ; 
TextOut ( hdc, 280, 220, szMsg2, lstrlen(szMsg2) ) ; 
lpDDSBack->ReleaseDC (hdc) ; 

if (lpDDSPrimary->Flip(NULL,0)!=DD_OK){ //一经Flip,两个表面的指针互换!lpDDSPrimary指向后台表面,所以 
FreeDDraw() ; //你就看到刚才在后台表面上写的字了,而lpDDSBack指向了原来的前台主表面 
PostQuitMessage(0); //把它掉到后台进行操作 
}
}

这是mainloop的一段代码 因为对windows api不熟悉,所以这些代码都是网上找的拼起来的。
背景图片BKGND可以用,但是CENTER那个文件为什么不行。 CENTER是一个飞机模型,我想实现类似于雷电一样的飞机模拟游戏。所以CENTER希望贴小图,如何实现?谢谢~~~

[解决办法]
_bitmapphoto.ModifyStyle(0, SS_BITMAP);
bitmap1.LoadBitmap( IDB_BITMAP3 );//图片ID
m_bitmapphoto.SetBitmap( (HBITMAP)bitmap1.GetSafeHandle() );//设置。
给你段代码试试。背景和那个贴图还是有区别的!

热点排行