手持式设备18位彩色LCD显示屏的一种电池图标显示方案
2010-04-02 17:03
218 查看
手持式设备,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
我做的一款产品用到了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显示屏的一种电池图标显示技巧
- 模拟器显示屏上方的信号和电池图标不显示设置
- wm命令用法及LCD显示图标大小不正常时解决的方法
- eclipse安装ADT插件重启后不显示Android SDK Manager和Android Virtual Device Manager图标的一种解决办法
- 任意文字,任意图片,彩色lcd显示,画面实时更新,全部通过非gui方式实现了。
- 关于Android圆形图片的一种优化方案(可以显示网络图片)
- 单片机 stm32读取ico图标文件 从SD卡中解码显示到LCD
- Android5.0及以上版本通知栏和状态栏不显示彩色图标而都是白色
- wm命令使用方法及LCD显示图标大小不正常时解决办法
- 插入U盘托盘区不显示已连接USB设备图标,怎么安全删除U盘
- 悬浮窗口(智能隐藏和显示)的一种实现方案
- 单片机中用lcd显示电池充电
- 从SystemUI电池图标的显示探讨Android电池管理
- eclipse安装ADT插件重启后不显示Android SDK和AVD图标的一种解决办法
- LCD显示--Ht1621b芯片显示屏驱动
- 悬浮窗口(智能隐藏和显示)的一种实现方案
- 电脑设备中PCI简易通讯控制器驱动显示黄色感叹号图标怎么办【申明:来源于网络】
- 关于Android圆形图片的一种优化方案(可以显示网络图片)
- eclipse安装ADT插件重启后不显示Android SDK Manager和Android Virtual Device Manager图标的一种解决办法
- Linux设备驱动之LCD显示摄像图像之一框架与准备工作