概述
手持式设备,18位彩色LCD显示屏的一种电池图标显示方案: 我做的一款产品用到了320x240的彩色显示屏,界面上需要显示一款电池图标,并且图标要根据电量变化来更新。 由于我用的是一款只有64k flash的MCU,且没有外部库扩展Flash,所以从存储空间的角度来说,直接存储几个电量状态的电池图标是不太可行的,而且要想使得对电量的显示等级多,则存的图标就多,显示空间就会被占用更多。 于是想了下面这个方案来解决这个问题: 把电池图标切成5个部分,即5个小图标,电池尾部batteryPartTail,电量部分batteryPart1,无电部分batteryPart0,有电无电结合部分gImage_batteryPart1,电池头部batteryPartHead。只需存储这五部分,相当于我一个整个的电池图片都没有存。 这样做有三个好处: 一是,压缩了存储空间。 二是,可以无限扩展电池的长度和电量变化的档数,而不论怎么变化,用于存储电池图标的空间是不变的,这多以后扩展很有好处。 三是,由于分开了有电和无电的图标,我们就可以通过给出的电量百分比percent和总电池量对应的显示长度FULL_BATTERY,换算出需要显示的有电batteryPart1和无电图标batteryPart0的个数,比较灵活。 Code 如下: //具体图标对应的数组我就不写了,你可以找任意一个电池取出这五个部分即可。 const unsigned char gImage_batteryPartTail_9x34[926]; const unsigned char gImage_batteryPart1_3x34[314]; const unsigned char gImage_batteryPart10_6x34[620]; const unsigned char gImage_batteryPart0_3x34[314]; const unsigned char gImage_batteryPartHead_9x34[926]; #define FULL_BATTERY 18 void DisplayPic_Battery( INT16U x_in, INT16U y_in, INT16U percent) { INT16U x,y; INT8U i,j; INT8U cycle_i, cycle_j; cycle_i = (INT8U)(percent*FULL_BATTERY/100); cycle_j = FULL_BATTERY - cycle_i; x = x_in; y = y_in; disppic( gImage_batteryPartTail_9x34,34,9,x,y); x+=9; for ( i=0; i
最后
以上就是忧虑长颈鹿为你收集整理的手持式设备18位彩色LCD显示屏的一种电池图标显示方案的全部内容,希望文章能够帮你解决手持式设备18位彩色LCD显示屏的一种电池图标显示方案所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复