Symbian 实现基于传统架构场景切换动画
2010-03-07 19:40:00 来源:WEB开发网// new instance
iScreenBitmap = new (ELeave) CFbsBitmap;
// push
CleanupStack: ushL(iScreenBitmap);
// create
User: eaveIfError(iScreenBitmap->Create(iScreenDevice->Siz eInPixels(),iScreenDevice->DisplayMode()));
// copy screen to bitmap
User: eaveIfError(iScreenDevice->CopyScreenToBitmap(iScre enBitmap));
// pop
CleanupStack: op(iScreenBitmap);
// Get the screen device
CWsScreenDevice * iScreenDevice = CCoeEnv::Static()->ScreenDevice();
// new instance
iScreenBitmap = new (ELeave) CFbsBitmap;
// push
CleanupStack: ushL(iScreenBitmap);
// create
User: eaveIfError(iScreenBitmap->Create(iScreenDevice->Siz eInPixels(),iScreenDevice->DisplayMode()));
// copy screen to bitmap
User: eaveIfError(iScreenDevice->CopyScreenToBitmap(iScre enBitmap));
// pop
CleanupStack: op(iScreenBitmap);
回到原来的话题,我们可以想办法把控件绘制到位图上面,这样就可以获得截图了。
我当初想的方法就是使用双缓冲,先把控件绘制到位图上,也就是说我自己写一个可以调用的Draw方法,然而,系统控件确没有办法这样实现,例如编辑框等,因为,这些控件是系统去调用它们的Draw函数的。。所以这种方法不可行。
其实,CCoeControl类有提供一个SetGC()函数,可以设置绘图上下文,系统默认设置的是 CEikonEnv::Static()->SystemGc();这个gc当然是画到了屏幕上面,我们可以通过调用函数SetGC()设置一个指向一张位图的绘图上下文,这样,就可以获得前后界面的截图了
获得前后界面的截图
/**
* 将一个界面绘制到位图上
*/
void DrowScreenInBitmap(CCoeControl* iScreen,CFbsBitmap * iBitmap){
CleanupStack: ushL(iBitmap);
// 获得屏幕设备
CWsScreenDevice * iScreenDevice = CEikonEnv::Static()->ScreenDevice();
//建立位图设备
更多精彩
赞助商链接