在 Symbian 上使用双缓冲
2010-04-20 15:58:00 来源:WEB开发网核心提示:iOffScrnBmpDevice = CFbsBitmapDevice::NewL(iOffScrnBmp);User::LeaveIfError(iOffScrnBmpDevice->CreateContext(iOffScrnContext));}说明一下,上面的代码除了生成了我们所需的Off-screen
iOffScrnBmpDevice = CFbsBitmapDevice::NewL(iOffScrnBmp);
User::LeaveIfError(iOffScrnBmpDevice->CreateContext(iOffScrnContext));
}
说明一下。上面的代码除了生成了我们所需的Off-screen Buffer,即一个4096色的CFbsBitmap之外,还在它上面加了一个
iOffScrnContext。这个东西(CFbsBitGc)是我们用来往我们的buffer上面画图用的工具。 继续:
代码:
CMyView::~CMyView()
{
delete iOffScrnBmp;
delete iOffScrnBmpDevice;
delete iOffScrnContext;
}
void CMyView::Draw(const TRect& aRect) const
{
// 把我们的buffer清空
iOffScrnContext->Clear(Rect());
// 在buffer里画方块,而不是在屏幕上
for (int i=0; i<100; i+=2)
{ iOffScrnContext->DrawRect(TRect(TPoint(i,i), TSize(50,50))); }
// 一次性把buffer画到屏幕上
CWindowGc& gc = SystemGc();
gc.BitBlt(TPoint(0,0), iOffScrnBmp);
}
哈哈!虽然离profx的星球上的技术还有一定差距,至少闪烁和“蠕虫现象”都消失了!Profx觉得,地球这个地方,还是可以
继续呆下去的。
更多精彩
赞助商链接