Subject: Symbian绘图全过程
Lee
Administrator
Rank: 9Rank: 9Rank: 9



UID 2
Digest Posts 0
Credits 18567
Posts 133
Money 189
Reading Access 200
Registered 13-3-2007
Status Offline
Post at 15-3-2007 14:09  Profile | Blog | P.M. 
Symbian绘图全过程



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方法,因为该窗口已经失效了- 这就是系统在第一时间启动重绘的原因。




有其他问题请加入Symbian开发群参与讨论:群 ①:623041已满,群②:36865776已满 请加群③:76404484
Top
 


All times are GMT+8, the time now is 5-9-2010 14:44

CopyRight © Symbianx.cn 2007 Powered By Discuz! 5
Clear Cookies - Contact Us - Symbian OS系统[S60,UIQ]开发中文翻译论坛 - Archiver

本站原文版权归原文作者所有,本站译文版权归本站所有,如需转载请注明原文和译文出处,否则追究法律责任