|
1.[EMWIN] 多国语言实现方法---csv文件实现
这个可以看这个博客
https://blog.csdn.net/ewrest/article/details/78346882
2.采用 allyzc 网友做的 一个很好的字库生成软件
生成我们用的字库。
最新的字库软件可以在这个帖子下载
http://www.armbbs.cn/forum.php?mod=viewthread&tid=87428&extra=&page=1
将生成的文件添加到工程中
附主要代码
/*
*********************************************************************************************************
*
* 模块名称 : GUI界面主函数
* 文件名称 : MainTask.c
* 版 本 : V1.0
* 说 明 : 本实验主要学习emWin的多语言文本显示
*
* 修改记录 :
* 版本号 日期 作者 说明
* V1.0 2016-07-16 Eric2013 首版
* V1.1 2019-07-04 雷鹏 添加多语言支持
* Copyright (C), 2015-2020, 安富莱电子 www.armfly.com
*
*********************************************************************************************************
*/
#include "MainTask.h"
#include "stdint.h"
/*定义多语言宏 */
enum
{
ENGLISH=0, /*英文*/
CHINESE, /*中文*/
JAPANESE, /*日文*/
TURKISH, /*土耳其语*/
/* 其他小语种没有做
GERMAN, //德语
PORTUGUESE ,//葡萄牙语
ITALIAN ,//意大利语
SLOVENIAN, //斯洛语
*/
LANG_NUM
};
///********语言值************/
const char* s_LangValue[LANG_NUM] =
{
"ENGLISH",
"简体中文",
"私たち",
"TÜRKÇE",
// "PORTUGUES", 葡萄牙
// "Slovensko", 斯洛文
};
/*外部字库定义*/
extern GUI_CONST_STORAGE GUI_FONT myFont_Engish; /*英语*/
extern GUI_CONST_STORAGE GUI_FONT myFont_Chinese; /*简体中文*/
extern GUI_CONST_STORAGE GUI_FONT myFont_Japanese; /*日本语*/
extern GUI_CONST_STORAGE GUI_FONT myFont_Turkish; /*土耳其语*/
/*将所有字库组合到一个 数组里面 方便程序调用*/
GUI_CONST_STORAGE GUI_FONT *FontWm[]=
{
&myFont_Turkish,
&myFont_Chinese,
&myFont_Japanese,
&myFont_Turkish,
};
/*
*********************************************************************************************************
* 函 数 名: MainTask
* 功能说明: GUI主函数
* 形 参: 无
* 返 回 值: 无
*********************************************************************************************************
*/
void MainTask(void)
{
uint8_t i;
/* 初始化 */
GUI_Init();
/*
关于多缓冲和窗口内存设备的设置说明
1. 使能多缓冲是调用的如下函数,用户要在LCDConf_Lin_Template.c文件中配置了多缓冲,调用此函数才有效:
WM_MULTIBUF_Enable(1);
2. 窗口使能使用内存设备是调用函数:WM_SetCreateFlags(WM_CF_MEMDEV);
3. 如果emWin的配置多缓冲和窗口内存设备都支持,二选一即可,且务必优先选择使用多缓冲,实际使用
STM32F429BIT6 + 32位SDRAM + RGB565/RGB888平台测试,多缓冲可以有效的降低窗口移动或者滑动时的撕裂
感,并有效的提高流畅性,通过使能窗口使用内存设备是做不到的。
4. 所有emWin例子默认是开启三缓冲。
*/
WM_MULTIBUF_Enable(1);
/*
触摸校准函数默认是注释掉的,电阻屏需要校准,电容屏无需校准。如果用户需要校准电阻屏的话,执行
此函数即可,会将触摸校准参数保存到EEPROM里面,以后系统上电会自动从EEPROM里面加载。
*/
/* 设置文本显示模式 */
GUI_SetTextMode(GUI_TM_TRANS);
GUI_SetBkColor (GUI_BLUE); /*设置背景色为蓝色*/
/* 要实现背景颜色的改变,必须的执行下面这句 */
GUI_Clear();
/* 使能UTF-8编码 必须要使能 */
GUI_UC_SetEncodeUTF8();
GUI_SetColor(GUI_WHITE); /*设置文本颜色为白色*/
for(i=0;i<LANG_NUM;i++)
{
GUI_SetFont(FontWm); /*设置字体*/
GUI_DispStringAt (s_LangValue,100, 100+50*i); /*显示内容*/
}
/*也可以这样调用 在实际项目中很实用 */
/*英文*/
GUI_SetFont(FontWm[ENGLISH]); /*设置字体*/
GUI_DispStringAt (s_LangValue[ENGLISH] ,400, 100+50*ENGLISH); /*显示内容*/
/*中文*/
GUI_SetFont(FontWm[CHINESE]); /*设置字体*/
GUI_DispStringAt (s_LangValue[CHINESE] ,400, 100+50*CHINESE); /*显示内容*/
/*日文*/
GUI_SetFont(FontWm[JAPANESE]); /*设置字体*/
GUI_DispStringAt (s_LangValue[JAPANESE],400, 100+50*JAPANESE); /*显示内容*/
/*土耳其语*/
GUI_SetFont(FontWm[TURKISH]); /*设置字体*/
GUI_DispStringAt (s_LangValue[TURKISH] ,400, 100+50*TURKISH); /*显示内容*/
while(1)
{
GUI_Delay(10);
}
}
/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/
显示效果
显示两行是为了 展示两种使用方法。
最后附上基于V6开发板的工程文件
在其他的开发板上也是一样的用法。
|
评分
-
查看全部评分
|