Symbian 实现基于传统架构场景切换动画
2010-03-07 19:40:00 来源:WEB开发网CleanupStack::PushL(gc);
// SetGc()函数所使用的绘图上下文必须是指向窗口的,因此,必须对gc做一下映射(mapping)
CWindowToBitmapMappingGc *wbgc = CWindowToBitmapMappingGc::NewL(*iScreenDevice,*gc) ;
CleanupStack::PushL(wbgc);
// 这个是自己定义的函数,对每个控件以及它的所有子控件设置GC
SetGc(iScreen,wbgc);
// 调用重绘,此时,控件绘制到了位图上
iScreen->DrawNow();
// 绘制完之后,设置回原来的GC
SetGc(iScreen,NULL);
CleanupStack::PopAndDestroy(wbgc);
CleanupStack::PopAndDestroy(gc);
CleanupStack::PopAndDestroy(iDevice);
CleanupStack::Pop(iBitmap);
}
/**
* 为每一控件以及它的所有子控件重新设置gc
*/
void SetGc(CCoeControl * iControl,CWindowToBitmapMappingGc* wsgc){
iControl ->SetGc(wsgc);
TInt count = iControl->CountComponentControls();
if(count == 0){
return;
}
for(TInt index = 0; index < count; ++index){
SetGc(iControl->ComponentControl(index),wsgc);
}
}
动画的实现
我们已经可以获得前后界面的截图了,有了这两张截图,我相信动画的实现就比较简单了,对这两张图进行合并,透明什么的,绘制到另一个界面上,这个界面可以用来专门显示场景切换的动画,只要使用一个活动对象或者定时器,动态改变绘制的内容,就可以实现了
更多精彩
赞助商链接