CBitmap m_bmpHouse;
CBitmap m_bmpSmallPsr;
m_bmpSmallPsr.LoadBitmap(IDB_CCC); //加载资源
m_bmpHouse.LoadBitmap(IDB_BBB);
SetTimer(100,100,NULL);
CPaintDC dc(this); // 用于绘制的设备上下文
static int i = 0;
CBitmap bmpp;
BITMAP bmpinfo;
CRect rcSCr;
GetClientRect(&rcSCr);
bmpp.CreateCompatibleBitmap(&dc,rcSCr.Width(),rcSCr.Height());
CDC dcmem,dctmp;
dcmem.CreateCompatibleDC(&dc);
dctmp.CreateCompatibleDC(&dcmem);
dcmem.SelectObject(&bmpp);
dctmp.SelectObject(&m_bmpHouse); //临时DC选入房子图片位图
m_bmpHouse.GetBitmap(&bmpinfo);
dcmem.BitBlt(0,0,bmpinfo.bmWidth,bmpinfo.bmHeight,&dctmp,0,0,SRCCOPY); //在内存DC上绘图,先把房子画上去
dctmp.SelectObject(&m_bmpSmallPsr); //临时DC选入小人图片位图
m_bmpSmallPsr.GetBitmap(&bmpinfo);
//SRCERASE不错MERGEPAINT
//dcmem.BitBlt(i,50,bmpinfo.bmWidth,bmpinfo.bmHeight,&dctmp,0,0,SRCERASE); //在内存DC上绘图,再把小人画上去
dcmem.TransparentBlt(i,50,bmpinfo.bmWidth,bmpinfo.bmHeight,&dctmp,0,0,bmpinfo.bmWidth,bmpinfo.bmHeight,RGB(255,0,255));
dc.BitBlt(0,0,rcSCr.Width(),rcSCr.Height(),&dcmem,0,0,SRCCOPY); //最后在屏幕DC上画图,把内存DC上的图搬上去
dcmem.DeleteDC(); //清理资源
dctmp.DeleteDC();
TRACE("%d\n",++i);
if (i > rcSCr.Width())
{
i = -bmpinfo.bmWidth;
}
if (100 == nIDEvent)
{
Invalidate(0);
}