本人用的是STM32MINI开发板,现在在做汉字显示,在学习正点原子提供的程序源码过程中时,看到一个函数void Show_Str(u16 x,u16 y,u16 width,u16 height,u8*str,u8 size,u8 mode)
该函数的功能是实现汉字的显示,并具有自动换行功能,但是在实际测试过程中,运行该函数并不具有自动换行的功能,我想请大家帮我看看这个函数有什么问题
void Show_Str(u16 x,u16 y,u16 width,u16 height,u8*str,u8 size,u8 mode)
{
u16 x0=x;
u16 y0=y;
u8 bHz=0; //字符或者中文
while(*str!=0)//数据未结束
{
if(!bHz)
{
if(*str>0x80)
bHz=1;//中文
else
{
if(x>(x0+width-size/2))//换行
{
y+=size;
x=x0;
}
if(y>(y0+height-size))
break;//越界返回
if(*str==13)//换行符号
{
y+=size;
x=x0;
str++;
}
else
LCD_ShowChar(x,y,*str,size,mode);//有效部分写入
str++;
x+=size/2; //字符,为全字的一半
}
}
else//中文
{
bHz=0;//有汉字库
if(x>(x0+width-size))//换行
{
y+=size;
x=x0;
}
if(y>(y0+height-size))
break;//越界返回
Show_Font(x,y,str,size,mode); //显示这个汉字,空心显示
str+=2;
x+=size;//下一个汉字偏移
}
}
} |