新手上路
- 积分
- 42
- 金钱
- 42
- 注册时间
- 2017-7-13
- 在线时间
- 8 小时
|
楼主 |
发表于 2017-7-14 23:14:31
|
显示全部楼层
void LCD_ShowChinese(u16 x,u16 y,u8 *num,u8 size,u8 mode)
{
u8 temp,t1,t;
u16 y0=y;
u8 csize=(size/8+((size%8)?1:0))*size; //得到字体一个字符对应点阵集所占的字节数
int index = -1;
if(size == 12)
{
for(t=0; t<sizeof(ch_12_12)/sizeof(ch_12_12[0]); t++)
{
if((num[0] == ch_12_12[t].index[0]) && (num[1] == ch_12_12[t].index[1]))
{
index = t;
break;
}
}
}
else if(size == 16)
{
for(t=0; t<sizeof(ch_16_16)/sizeof(ch_16_16[0]); t++)
{
if((num[0] == ch_16_16[t].index[0]) && (num[1] == ch_16_16[t].index[1]))
{
index = t;
break;
}
}
}
else if(size == 24)
{
for(t=0; t<sizeof(ch_24_24)/sizeof(ch_24_24[0]); t++)
{
if((num[0] == ch_24_24[t].index[0]) && (num[1] == ch_24_24[t].index[1]))
{
index = t;
break;
}
}
}
else
{
return; // 没有对应的字库
}
if(index == -1) return; // 字库中没有找到要显示的汉字
for(t=0;t<csize;t++)
{
if(size == 12) temp=ch_12_12[index].word[t];
else if(size == 16) temp=ch_16_16[index].word[t];
else if(size == 24) temp=ch_24_24[index].word[t];
for(t1=0;t1<8;t1++)
{
if(temp&0x80)LCD_Fast_DrawPoint(x,y,POINT_COLOR);
else if(mode==0)LCD_Fast_DrawPoint(x,y,BACK_COLOR);
temp<<=1;
y++;
if(y>=lcddev.height)return; //超区域了
if((y-y0)==size)
{
y=y0;
x++;
if(x>=lcddev.width)return; //超区域了
break;
}
}
}
}
void LCD_ShowString(u16 x,u16 y,u16 width,u16 height,u8 size,u8 *p)
{
u8 x0=x;
width+=x;
height+=y;
while((*p!=127)&&(*p>=' ')) // 127是del符号
{
if(x>=width){x=x0;y+=size;}
if(y>=height)break;//退出
if(*p >127) // 汉字大于127
{
LCD_ShowChinese(x,y,p,size,0);
x += size;
p += 2;
}
else
{
LCD_ShowChar(x,y,*p,size,0);
x += size >> 1;
p++;
}
}
}
|
|