(原文件名:图示.gif)
简单的解析下:
现在有A B C D四行汉字,本例每行一个字,多个字也一样
通过一定的算法(关键是移位)将A B C D的字模转化成CN0 CN1 CN2 三个字模,这样就去掉了ABCD字模中的空格,节省了空间
再按常规方法显示CN0 CN1 CN2,实际显示就是四行字了,比较简洁吧,转换的过程与具体的显示细节无关,更与硬件平台无关。
核心代码如下:
char chinese[][24];
char chinese1[][24];
char chinese2[][24];
char a[][24];
char b[][24];
char c[][24];
char d[][24];
void transform(void)
{
char i,n; //n为每行字数
for(n=0;n<7;n++)
{
for(i=0;i<=23;i++)
if(i<=11)
chinese[n]=a[n];
else
chinese[n]=(b[n][i-12]<<4)+a[n];
}
LCD_write_chinese_string(0,0,12,7,0,0);
for(n=0;n<7;n++)
{
for(i=0;i<=23;i++)
if(i<=11)
chinese1[n]=(b[n]>>4)+(b[n][i+12]<<4);
else
chinese1[n]=c[n][i-12];
}
LCD_write_chinese_string1(0,2,12,7,0,0);
for(n=0;n<7;n++)
{
for(i=0;i<=23;i++)
if(i<=11)
chinese2[n]=c[n][i+12]+(d[n]<<4);
else
chinese2[n]=(d[n][i-12]>>4)+(d[n]<<4);
}
LCD_write_chinese_string2(0,4,12,7,0,0);
}
代码需要自己画图列下算法,这样更明了
演示效果如下:
(原文件名:图像0066.jpg)
(原文件名:图像0067.jpg)
0