手持式设备18位彩色LCD显示屏的一种电池图标显示方案

手持式设备,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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值