我用3dmax作了一个动画,是飞机着陆的动画,我用若干图片的形式记录了这个动画过程,我想在vc里面调用这些图片,再恢复成动画过程,如何处理??需要用到vc里面的哪些知识??能不能给我个类似的处理程序??还有附加的一个问题是:如何将两个位图处理成为一个位图(合成)??因为我保存的图片是将一个场景分坐两个图片来保存,需要在vc下先将这两个图片合成一个图片,然后再连起来成为动画。谢谢,希望大家多交流,qq:16748096
email: gaoyoujun7777@sohu.com
email: gaoyoujun7777@sohu.com
加入位图资源,假设ID = IDB_BITMAP;在OnDraw函数中加入代码如下:CBitmap bitmap;
HBITMAP hOldBitmap;
CDC mdc;
bitmap.LoadBitmap(IDB_BITMAP);
mdc.CreateCompatibleDC(pDC);
hOldBitmap=(HBITMAP)mdc.SelectObject(&bitmap);
pDC->BitBlt(0,0,100,100,&mdc,0,0,SRCCOPY); //这一句是贴图的代码
mdc.SelectObject(&hOldBitmap);
ID为IDB_BITMAP1-4。如下完成OnDraw函数:void CBBitmapView::OnDraw(CDC* pDC)
{
CBBitmapDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here CBitmap bitmap;
HBITMAP hOldBitmap;
CDC mdc;
mdc.CreateCompatibleDC(pDC); for(int i=0;i<10;i++)
{
Sleep(100);
bitmap.DeleteObject();
bitmap.LoadBitmap(IDB_BITMAP1);
hOldBitmap=(HBITMAP)mdc.SelectObject(&bitmap);
pDC->BitBlt(100,100,48,48,&mdc,0,0,SRCCOPY);
mdc.SelectObject(&hOldBitmap); Sleep(100);
bitmap.DeleteObject();
bitmap.LoadBitmap(IDB_BITMAP2);
hOldBitmap=(HBITMAP)mdc.SelectObject(&bitmap);
pDC->BitBlt(100,100,48,48,&mdc,0,0,SRCCOPY);
mdc.SelectObject(&hOldBitmap); Sleep(100);
bitmap.DeleteObject();
bitmap.LoadBitmap(IDB_BITMAP3);
hOldBitmap=(HBITMAP)mdc.SelectObject(&bitmap);
pDC->BitBlt(100,100,48,48,&mdc,0,0,SRCCOPY);
mdc.SelectObject(&hOldBitmap); Sleep(100);
bitmap.DeleteObject();
bitmap.LoadBitmap(IDB_BITMAP4);
hOldBitmap=(HBITMAP)mdc.SelectObject(&bitmap);
pDC->BitBlt(100,100,48,48,&mdc,0,0,SRCCOPY);
mdc.SelectObject(&hOldBitmap);
}
}
这只是个演示程序,实际中这样在OnDraw中用循环贴图是不好的。你在应用时可以用
Timer处理。另外使用CBitmap对象Load另一幅图之前要DeleteObject();
ID为IDB_BITMAP1-4。如下完成OnDraw函数:void CBBitmapView::OnDraw(CDC* pDC)
{
CBBitmapDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here CBitmap bitmap;
HBITMAP hOldBitmap;
CDC mdc;
mdc.CreateCompatibleDC(pDC); int ID[]={IDB_BITMAP1,IDB_BITMAP2,IDB_BITMAP3,IDB_BITMAP4};
for(int i=0;i<10;i++)
{
for(int j=0;j<4;j++)
{
Sleep(100);
bitmap.DeleteObject();
bitmap.LoadBitmap(ID[j]);
hOldBitmap=(HBITMAP)mdc.SelectObject(&bitmap);
pDC->BitBlt(100,100,48,48,&mdc,0,0,SRCCOPY);
mdc.SelectObject(&hOldBitmap);
}
}
}
这只是个演示程序,实际中这样在OnDraw中用循环贴图是不好的。你在应用时可以用
Timer处理。另外使用CBitmap对象Load另一幅图之前要DeleteObject();
谢谢!
或着用Timer.
我有播放flash的VC原码。下个flash SDK弄弄吧。可以生成flash文件。