请教:希望有人能指点一下以下的动画程序.谢谢

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);
}
...全文
185 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zfjrz 2004-08-19
  • 打赏
  • 举报
回复
有人遇到过吗,或者知道怎么回事的,帮帮忙啊.谢谢
DentistryDoctor 2004-08-17
  • 打赏
  • 举报
回复
主要是合成的效率低吧。
DentistryDoctor 2004-08-17
  • 打赏
  • 举报
回复
为何每次都合成呢?
zfjrz 2004-08-17
  • 打赏
  • 举报
回复
程序本身不大,好像没有动用DirectX的必要吧,只是3个16*16的图标,难道没有更好的方法了吗
zfjrz 2004-08-17
  • 打赏
  • 举报
回复
谢啦,已经知道用settimer()控制的了,但是现在还有个问题,就是为什么当窗体被其他窗体覆盖一次后(就是图形被遮挡),窗体中的DC会全部无效???
急啊
zfjrz 2004-08-17
  • 打赏
  • 举报
回复
to: zzz3265(zzz)
好快啊~~~~~~能控制一下速度吗?不用Sleep()的话
Yofoo 2004-08-17
  • 打赏
  • 举报
回复
在Timer 里不要用Sleep()
建议一种方式

{
i++;
switch(i%3)
{
case 0: .......;
case 1:........;
}
}

这样应该会好些,其实CGI也不是很慢的
howtotell 2004-08-15
  • 打赏
  • 举报
回复
gdi的效率是比较低的.用dirext draw就好多了.

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧