BUIW和BREW的刷屏位图管理

来源:互联网 发布:网站加v对seo有好处吗 编辑:程序博客网 时间:2024/05/23 20:17

 

这里主要说一下没有用MDP时候的刷屏管理机制,后面再专文介绍MDP机制。

1.系统初始化过程中在AEE_Init()->AEE_Init1()中创建系统设备位图;

2.该设备位图会提供一组接口用于维护设备位图,主要是刷屏接口;

3.每个APP创建的时候都会建立一个自己的IDisplay接口,其中会建立相应的IBitMap结构,该结构中每个APP都有自己的绘画窗口信息字段和对应缓存区的指针。APP的绘画都在自己的IBitMap上进行,而该IBitMap结构中m_Dib.pBmp指针都指向系统设备位图中的缓存块,也就是说所有APP刷屏的时候都是直接更新的系统设备位图,所以,画完后直接调用IDisplay_Update()把系统设备位图缓存内容刷入LCD即可。

4.BUIW中,创建RootForm的时候会创建当前应用的Display,实际上是获取3中描述的在创建应用时已经创建好的IDISPLAY接口,并在RootContainer中保存对应Canvas,刷新的时候会在该canvas上绘画,通过该canvas即可获取当前app的IDispaly指针并在当前APP的bitmap上绘图。

5.如果用IBITMAP_CreateCompatibleBmp接口,则可以创建出一套与原有bmp兼容的bmp,bmp配置参数基本一样,只是需指定宽高,另外非常重要的一点是用此接口创建出来的IBITMAP结构中的BMP buffer是一块单独的buffer,而不是上述的系统公用的buffer。通过这种方式,可以实现一些比较复杂绘图或者避免一些刷新的问题,比如去闪烁等。比如用户可以先在该compatible Bmp中绘好图,然后再bitblt到app的dev bitmap中,最后再Update,避免某些特殊情况下绘图时间过长或者需要等待导致刷屏出现问题。