WinCE动态修改启动LOGO
??? 前两天介绍了WinCE启动界面的定制,在实际应用中经常还需要让用户方便修改启动LOGO。通常情况下,启动LOGO是编译到BOOT代码中的。为了实现动态修改启动LOGO,需要将LOGO保存至Flash中,BOOT启动时从特定的位置将其读取出来,并填入FrameBuffer。另外,必须让用户能够通过应用程序在WinCE系统中修改Flash中保存的LOGO。为了方便BOOT中显示,一般会在PC上利用Img2LCD将图片文件转换为能够直接填充进FrameBuffer的格式。如果要让该功能更灵活,则必须在WinCE上实现类似于Img2LCD的功能,直接让用户选择不同格式和大小的图片,转换完成后直接写入Flash中。 ??? 启动LOGO在Flash中存储的位置也是需要考虑的一个问题。最简单的方法就是将其放在WinCE内核的后面。这样BOOT中读取LOGO跟读取内核可以用一套代码。同样,WinCE应用程序中更新内核与更新LOGO也可以用一套代码。只是在划分空间时,需要留出一些余量,以免以后在调整的过程中捉襟见肘,不够灵活。 ??? 在我目前使用的平台上,4GB大小的NAND划分如下。 ??? 可以看到BOOT占4MB,System占4KB,用于存储一些必要的数据,Kernel用于存储NK.nb0,目前为56MB,后面剩下8MB的空间就可以用来存储一张或者多张启动LOGO。实际上启动LOGO存放的位置是60MB,与Kernel之间留有4MB的余量,以防后患。4MB用来存LOGO,至少可以存的下一张分辨率为1024*768的32位色图。 ??? 应用程序中添加一小段类似于更新NK的代码实现更新LOGO.bin文件,界面如下。 ??? 目前已经基本实现了以上所说的动态更新LOGO的功能,接下来主要考虑如何支持多种格式、多分辨率和不同位色的图片文件,也就是在WinCE系统上实现一个类似于Img2LCD的软件。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Flex中ByteArray与BitmapData互相转换实现图片的二进制保存
- webpack打包优化解决方案
- 对vue.js中this.$emit的深入理解
- SQLite中的两个日期之间的差异
- PostgreSQL 遇到问题之一 read成功偏偏没有数据
- Swift基础语法: 23 - Swift的闭包简介, Sorted函数, 闭包的
- SQLite3 fts3 AUTOINCREMENT无法正常工作
- c语言之字符指针变量和字符数组的异同
- objective-c – 如何使用apple bonjour for iOS阅读TXT记录
- CKEditor+SWFUpload实现功能较为强大的编辑器(一)---CKEd