攻城军师
最后登录1970-1-1
在线时间 小时
注册时间2013-5-23
|
发表于 2013-10-10 00:14:07
|
显示全部楼层
先显示字符,然后接着后面的位置,再刷干净它 就可以。
参考 一下 k60 的代码呗。就开头Site_t 是个坐标 结构体,即 x 和 y
[code=cpp]/*!
* @brief 显示数字(清空多余的位)
* @param site 左上角坐标
* @param num 数字
* @param max_num_bit 最大的位数
* @param Color 字体颜色
* @param bkColor 背景颜色
* @since v5.0
* Sample usage: Site_t site = {10,20}; //x = 10 ,y = 20
LCD_num_BC(site,123,5, BLUE,RED);
*/
void LCD_num_BC(Site_t site, uint32 num, uint8 max_num_bit, uint16 Color, uint16 bkColor)
{
uint32 res = num;
uint8 t = 0;
Site_t sitetemp;
Size_t size;
sitetemp.y = site.y;
if( num == 0 )
{
LCD_char(site, '0', Color, bkColor);
site.x += 8;
size.H = 16;
size.W = 8 * (max_num_bit - 1);
LCD_rectangle(site, size, bkColor);
return;
}
while( res ) /*得到数字长度t*/
{
res /= 10;
t++;
}
if(t >= max_num_bit ) //限制最大长度
{
t = max_num_bit;
}
res = t;
while( t != 0 )
{
sitetemp.x = site.x + (8 * (t--) - 8);
LCD_char(sitetemp, (num % 10) + '0', Color, bkColor);
num /= 10 ;
}
if(res != max_num_bit )
{
size.W = 8 * (max_num_bit - res);
site.x += (8 * res);
size.H = 16;
LCD_rectangle(site, size, bkColor);
}
}[/code] |
|