请教:希望有人能指点一下以下的动画程序.谢谢
zfjrz 2004-08-15 11:17:27 //要求是把一个数据文件中的非标准位图显示出来,并合成动画,我的程序可以实现,但是效果不好.
希望各位大侠能给点一件.
void CPeDlg::OnVF()
{
CFile pf;
__int16 CPBuf[16]; //文件中的颜色表
__int8 PixBuf[128*3];//文件中的位图数据
COLORREF CPL[16]; //标准颜色表
int Pix[256],Pix1[256],Pix2[256];//标准的位图数据
pf.Open (m_filename1, CFile::modeRead | CFile::typeBinary);
/*
从数据文件中获取非标准格式的图形数据
......
*/
pf.Close ();
/*转换成标准的RGB表,及位图数据
.....
dc=m_gIcon.GetDC();
dc1=m_gIcon2.GetDC();
dc2=m_gIcon3.GetDC();
dcn = m_icon2.GetDC ();
for (int y=0;y<16;y++)
for (int x=0;x<16;x++)
{
//绘画图形,有三帧
dc->SetPixel(x,y,CPL[Pix[y*16+x]]);
dc1->SetPixel(x,y,CPL[Pix1[y*16+x]]);
dc2->SetPixel(x,y,CPL[Pix2[y*16+x]]);
}
this->ndrew =1;
OnTimer(1);
}
void CPeDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
dcn = m_icon2.GetDC ();
if (ndrew )
{
//合成动画,并显示
dcn->FillSolidRect(CRect(0,0,16,16), ::GetSysColor(COLOR_WINDOW));
dcn->BitBlt(0,0,16,16,dc,0,0,SRCCOPY);
Sleep(200);
dcn->FillSolidRect(CRect(0,0,16,16), ::GetSysColor(COLOR_WINDOW));
dcn->BitBlt(0,0,16,16,dc1,0,0,SRCCOPY);
Sleep(200);
dcn->FillSolidRect(CRect(0,0,16,16), ::GetSysColor(COLOR_WINDOW));
dcn->BitBlt(0,0,16,16,dc2,0,0,SRCCOPY);
Sleep(200);
}
CDialog::OnTimer(nIDEvent);
}