我有一张bmp文件 包含28张阶段的图,已经建好透明贴图,如何在view上显示动画,让28张图连接起来,希望源代码指点,我代码如下:
CWnd * PaintWind=this;
CDC * PaintWindDC=PaintWind->GetDC();
CRect aRect;
PaintWind->GetClientRect(aRect);
int x,y;// 在view显示的地方
if (m_dc.m_hDC == NULL)
{
m_dc.CreateCompatibleDC(PaintWindDC);
m_pbmpOld= m_dc.SelectObject(&m_bmp);
}
if (m_dcMask.m_hDC == NULL)//透明贴dc
{
m_dcMask.CreateCompatibleDC(PaintWindDC);
m_pbmpOldMask= m_dcMask.SelectObject(&m_bmpMask);
} srand( (unsigned)time(NULL));
x=(rand()%(int)(aRect.Width() / 2))+(int)(aRect.Width() / 4);
y=(rand()%(int)(aRect.Height() / 2))+(int)(aRect.Height() / 4);
for(int i=0;i<28;i++)
{                                 //88为宽度 114为高度
PaintWindDC->BitBlt( x, y,88,114,&m_dcMask,0,114*i, SRCAND);
PaintWindDC->BitBlt( x, y,88,114,&m_dc,0,114*i, SRCPAINT);
Sleep(20);
//在此如何把已经显示的图形屏蔽????
} PaintWind->ReleaseDC (PaintWindDC);
高手请指点!

解决方案 »

  1.   

    I can help you to up
      

  2.   

    恩?显示动画,如果你只是用bmp的方式,无非就是用timer将显示连接起来而已。
    用双缓存避免闪动。对于你的显示方式。屏蔽已显示的图片,可以用0与整个图片与。
    或者干脆将底色重新画一遍。或者设置变量, 记录上一次的x,y值,覆盖掉就可以。你的程序我大概看懂了。
      

  3.   

    不知有没有 bmp动画贴图的例子
      

  4.   

    必须用for建立内存数组把图片都读进去 ,然后逐个贴图当然要用SetTimer ,不要用sleep