Symbian绘图全过程

CODE:
void CExampleControl::DrawBitmap( const TPoint& aPoint, const CFbsBitmap* aBitmap ) { // 获得系统图形场景及控制矩形区域 CWindowGc& gc = SystemGc(); // 建立绘制矩形区 TRect rect = TRect( aPoint, TSize( aBitmap.iWidth, aBitmap.iHeight ) ); // 激活图形场景 ActivateGc(); // 使窗口失效 Window().Invalidate( rect ); Window().BeginRedraw( rect ); // 绘制一幅位图 gc.DrawBitmap( aPoint, aBitmap ); Window().EndRedraw(); // 终止图形场景的活动状态 DeactivateGc(); }

上述范例代码在参数aPoint所定义的地方绘制了一个CFbsBitmap。在这个范例中,值得注意的情况是:使用绘图场景前需要先激活它,而绘图结束后又需要终止其活动状态。当某个客户端开始绘图时,窗口服务器也需要相关信息。用BeginRedraw方法可以完成这一任务。Invalidate方法也是需要的,这是因为:窗口服务器只允许应用程序在一个失效的区域内绘图。由系统启动的重绘中,CONE激活绘图场景,并为某个应用程序调用BeginRedraw方法。这里并不一定要调用Invalidate方法,因为该窗口已经失效了- 这就是系统在第一时间启动重绘的原因。

 

我们一般都是在Draw里面实现绘图,如果在其它函数里面直接调用Gc是不能实现绘图的,因为Draw封装了激活绘图场景。

你可能感兴趣的:(活动,服务器,任务,Symbian,图形)