2、显示汉字
我们使用纯LCD驱动来显示字符串时,通常都会调用类似这样的接口:
void LCD_ShowString(uint16_t x,uint16_t y,uint16_t width,uint16_t height,uint8_t size,char *p);
void PutChinese_strings(uint16_t Xpos,uint16_t Ypos,uint8_t *str,uint8_t mode);
在准备好字库的情况下,想显示什么字符串就往这些接口里扔字符串就可以了。
同样的,GuiLite也给我们提供了一个类似的接口:
void draw_string(c_surface* surface, int z_order, const char *s, int x, int y, const FONT_INFO* font, unsigned int font_color, unsigned int bg_color, unsigned int align_type = ALIGN_LEFT)
中英文字符串的显示都是操作这个接口。需要注意的是,这里显示中文字符串的方式有点不一样。比如:
这个类的成员函数里面最终需要用到的是utf-8编码的数据。英文字符(ASCII码字符)是兼容utf-8编码的,所以转与不转都一样。
这里的xxx又是什么意思呢?
其实这也是我们C语言的知识点之一,我们都知道 、 这些都是转义字符,其实x后跟的是16进制数据也代表转义字符。同样的,后面跟着八进制数据也代表转义字符。
只不过这个知识点我们平时用得可能不多,比较容易忘记。看一个表或许我们就可以记起来了:
所以,其实在我们C语言中有好几种打印输出hello world字符串的方法: