jhw4897168 发表于 2011-8-23 22:19:08

求助高手!!关于裸奔第五章字库移植的一些问题

void Lcd_printf(unsigned int x,unsigned int y,unsigned int c,unsigned int
bk_c,unsigned int st,char *fmt,...)
{
char __LCD_Printf_Buf;
va_list ap;
unsigned char *pStr = (unsigned char *)__LCD_Printf_Buf;
unsigned int i = 0;
va_start(ap,fmt);
vsprintf(__LCD_Printf_Buf,fmt,ap);
va_end(ap);
while(*pStr != 0 )
{
switch(*pStr)
{
case '\n' :
{
break;
}
default:
{
if( *pStr > 0xA0 & *(pStr+1) > 0xA0 )
//中文输出
{
Lcd_PutHZ( x , y , (*pStr - 0xA0)*0x0100 +
*(pStr+1) - 0xA0 , c , bk_c , st);
pStr++;
i++;
x += 16;
}
else //英文输出
{
Lcd_PutASCII( x , y , *pStr , c ,
bk_c , st );
x += 8;
}
break;
}
}
pStr++;
i++;
if( i > 256 ) break;
}
}
第一是,程序中的i有什么作用,为什么大于256要break?








void Lcd_PutHZ(unsigned int x,unsigned int y,unsigned short int QW,unsigned int
c,unsigned int bk_c,unsigned int st)
{
unsigned short int i,j;
unsigned char *pZK,mask,buf;
pZK = &__CHS[ ( ( (QW >> 8) - 1 )*94 + (QW & 0x00FF)- 1 )*32 ];
for( i = 0 ; i < 16 ; i++ )
{
//左
mask = 0x80;
buf = pZK;
for( j = 0 ; j < 8 ; j++ )
{
if( buf & mask )
{
PutPixel(x+j,y+i,c);
}
else
{
if( !st )
{
PutPixel(x+j,y+i,bk_c);
}
}
mask = mask >> 1;
}
//右
mask = 0x80;
buf = pZK;
for( j = 0 ; j < 8 ; j++ )
{
if( buf & mask )
{
PutPixel(x+j + 8,y+i,c);
}
else
{
if( !st )
{
PutPixel(x+j + 8,y+i,bk_c);
}
}
mask = mask >> 1;
}
}
}


第二是,程序中这句话的意思:pZK = &__CHS[ ( ( (QW >> 8) - 1 )*94 + (QW & 0x00FF)- 1 )*32 ];


小弟在此多谢大家了,希望能给我一点帮助
页: [1]
查看完整版本: 求助高手!!关于裸奔第五章字库移植的一些问题