在做一個(gè)貪食蛇游戲希望用BMP圖片畫圖但是MFC中的函數(shù)不熟請(qǐng)教高手怎么畫如何自動(dòng)刷新

熱心網(wǎng)友

用BitBlt函數(shù)可以實(shí)現(xiàn)BMP位圖做畫,如果要實(shí)現(xiàn)刷屏,建議你使用WM_TIMER消息,每隔100ms(80ms效果可能更好,但100ms基本夠用),換一幅圖片。 當(dāng)然在用BitBlt函數(shù)時(shí),你可以采取只用區(qū)域圖片刷新的方法(即不改變整張圖片,只是改變圖片的一些變化部分),這就要你自己把握刷新的矩形區(qū)域了;也可以用StretchBlt函數(shù),此函數(shù)會(huì)擴(kuò)大或者縮小圖片,也許對(duì)你開發(fā)游戲會(huì)有幫助。

熱心網(wǎng)友

VC+OpenGL我以前做過(guò)一個(gè)

熱心網(wǎng)友

//定義位圖CBitmap m_car;int h,w;//定義位圖長(zhǎng)寬BITMAP BM;m_car。LoadBitmap(IDB_BITMAPA);//加載圖片m_car。GetBitmap(&BM);h=BM。bmWidth; //得到圖片寬度w=BM。bmHeight;//得到圖片長(zhǎng)度CDC dcMem;void CCARView::OnDraw(CDC* pDC){CCARDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc);dcMem。CreateCompatibleDC(pDC);//建新畫筆old=dcMem。SelectObject(&m_car);//保存舊的,使用當(dāng)前位圖pDC-BitBlt(0,0,h,w,&dcMem,0,0,SRCCOPY);//顯示位圖dcMem。SelectObject(old);//恢復(fù)舊畫筆dcMem。DeleteDC();//撤消資源}刷新區(qū)域InvalidateRect(CRect(0,0,h,w));根據(jù)你移動(dòng)的坐標(biāo)而定。

熱心網(wǎng)友

用pDC-LoadBitmap()函數(shù)不是更好嗎?

熱心網(wǎng)友

Lineto, MoveTo, BitBlt

熱心網(wǎng)友

用bitblt函數(shù),是sdk的函數(shù)要先做好位圖,再bitblt到屏幕上