MFC 我写游戏会卡……

我用GDI做了个魔塔游戏要显示N多图片的那种……会用ReleaseDC()和DeleteDC()并且检查了一遍没有什么问题了就是会卡。怎么解决?voidDrawOne(H... 我用GDI做了个魔塔游戏 要显示N多图片的那种 ……

会用ReleaseDC() 和 DeleteDC() 并且检查了一遍没有什么问题了
就是会卡。 怎么解决?

void DrawOne(HDC dc, int x, int y,int name, int b, HDC mdc)
{
CString str;
HBITMAP bg;
if(b==1|| braver.floornum[0]==braver.floornum[1])
{
str.Format("Image\\floor.bmp");
bg=(HBITMAP)LoadImage(NULL,str,IMAGE_BITMAP,32,32,LR_LOADFROMFILE);
SelectObject(mdc,bg);
BitBlt(dc,32*x+textmax+secondbraver,32*y,32,32,mdc,0,0,SRCCOPY);
str.Format("Image\\%d.bmp",name);
bg=(HBITMAP)LoadImage(NULL,str,IMAGE_BITMAP,32,32,LR_LOADFROMFILE);
SelectObject(mdc,bg);
TransparentBlt(dc,32*x+textmax+secondbraver,32*y,32,32,mdc,0,0,32,32,RGB(0,0,0));
}
if(b==0 || braver.floornum[0]==braver.floornum[1])
{
str.Format("Image\\floor.bmp");
bg=(HBITMAP)LoadImage(NULL,str,IMAGE_BITMAP,32,32,LR_LOADFROMFILE);
SelectObject(mdc,bg);
BitBlt(dc,32*x+textmax,32*y,32,32,mdc,0,0,SRCCOPY);
str.Format("Image\\%d.bmp",name);
bg=(HBITMAP)LoadImage(NULL,str,IMAGE_BITMAP,32,32,LR_LOADFROMFILE);
SelectObject(mdc,bg);
TransparentBlt(dc,32*x+textmax,32*y,32,32,mdc,0,0,32,32,RGB(0,0,0));
}
DeleteObject(bg);
}

void CMagicTowerView::OnDraw(CDC* pDC)
{
CMagicTowerDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
//CClientDC dc(this);
CString str;
HBITMAP bg;
HDC mdc=CreateCompatibleDC(pDC->m_hDC);
CBitmap bmp;
int x,y;
CDC dc;
dc.CreateCompatibleDC(pDC);
bmp.CreateCompatibleBitmap(pDC,416,416);
dc.SelectObject(&bmp);
pDC->SetBkColor(RGB(0,0,0));
CBrush pBrush;
pBrush.CreateSolidBrush(RGB(0,0,0));
CRect rect;
rect.SetRect(0,0,200,540);
...//忽略
for(x=0; x<13; x++)
{
for(y=0; y<13; y++)
{
DrawOne(dc,braver.x[0],braver.y[0],floor[ braver.floornum[0] ][ braver.y[0] ][ braver.x[0] ],0,mdc);
}
}
//pDC->m_hDC=GetDC();
//DeleteDC(pDC->m_hDC);
pDC->BitBlt(textmax,0,416,416,&dc,0,0,SRCCOPY);
...
//忽略
...
DeleteObject(bg);
dc.DeleteDC();
DeleteDC(mdc);
ReleaseDC(pDC);
}
展开
 我来答
QQ是2665611901
2012-11-19
知道答主
回答量:15
采纳率:0%
帮助的人:4.8万
展开全部
这个写法就是错误的。
不要去频繁的创建和删除DC,OBJECT这些。

另外,游戏最好是用Win32 API的框架写,这样处理效率更高。MFC只适合小游戏或者平台类游戏。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式