首 页 | 新 闻 | Symbian | Android| Windows Mobile | J2ME | 下载中心 | 游戏策划招聘与求职 | 购书指南 | 视频教程
您现在的位置: 开发视界 >> Symbian >> 绘图 >> 正文
在S60中的图象处理需要注意的几点问题
作者:未知    文章来源:http://www.wa01.com    更新时间:2006-3-8 9:15:39

1:任何窗体内调用DrawNow来绘制的时候,如果这个窗体从没有用SetRect来设置过,则进行重绘时是没有任何效果的,通过调试发现Draw( )的CALLBACK方法里,系统给你传递的TRect是0,0,0,0,但第一次是可以的,因为从最上层传递过一个ApplicationRect

在用户自己写的绘图方法里,一般是这样的过程:

ActivateGc( );
CWindowGc& gc = SystemGc( );
....
DeactivateGc( );

//等同于下面的:
CWindowGc& gc = SystemGc( );
gc->Activate( *Window( ) );
gc->Deactivate( );

注意不要使用Window( )->BeginRedraw( )和Window( )->EndRedraw( );

2:关于双缓冲
需要使用的类:CFbsBitmap,CFbsBitmapDevice,CFbsBitmapGc
过程:

CFbsBitmap* pBuffer;
CFbsBitmapDevice* pDevice;
CFbsBitGc* pGc;

pBuffer = new( ELeave )CFbsBitmap;
CleanupStack::PushL( pBuffer )
pBuffer->Create( size,EColor4K );
pDevice = CFbsBitmapDevice::NewL( *pBuffer );
pDevice->CreateContext( pGc );

3:为什么我在框架体系内用BitBltMasked绘制透明图片时根本不透明,在透明区域显示的是灰色或其他颜色??
用BitBltMasked绘制的时候需要注意,遮罩图的透明部分是用画刷填充的。所以如果想要达到透明效果,必须:

gc.SetBrushStyle( CGraphicsContext::ENullBrush );

4:为什么用CMdaImageFileToBitmapUtility类来装载GIF动画时只能显示第一张??

其实CMdaImageFileToBitmapUtility在Open的方法里只解压GIF动画序列的第一张,此时你用FrameCount()返回的
是1,只有在成功的转化第一侦以后, FrameCount()才会返回2,这个时候才可以继续用ConvertL()来转化第二张

相关文章:
在S60中、正常UIQ3中使用设备无关字体变斜的解决方案
S60 3rd下实现Video Call 与 VoIP Call
symbian学习的开始
Symbian 应用软件开发、测试与S60 平台安全常见问题问答
Symbian开发环境设置(Microsoft Visual Studio.Net 2003工具)已测试通过
S60 3rd版下,如何运行控制台程序?
Symbian OS 应用程序在手机上无法运行的种种原因
S60系列用户界面显示器规范
 

站点地图 | 加入收藏 | 联系站长 | 广告服务 |
QQ:280529124  Tel:0592-8271361 辽ICP备05021703号