STemWin显示汉字 — SD卡外挂XBF字库
2024-10-19 20:46:42
转载注明出处 方法来自安福莱教程
1: 使用emWin自带小工具生成字库
(1)启动软件 选择4位抗锯齿
(2)根据需求选择字体类型和字体大小
(3)另存为XBF格式
2: 创建XBF字体
#include "DIALOG.h"
#include "font_cn.h" FATFS fatfs;
GUI_FONT XBF_Font;
FIL Fontfile;
FRESULT result;
unsigned int bw;
GUI_XBF_DATA XBF_Data; static int _cbGetData(U32 Off, U16 NumBytes, void * pVoid, void * pBuffer)
{
FIL *FontFile; FontFile = (FIL *)pVoid; result =f_lseek(FontFile, Off);
if (result != FR_OK)
{
return ;
} result = f_read(FontFile, pBuffer, NumBytes, &bw);
if (result != FR_OK)
{
return ;
}
return ;
} static void _ShowXBF(u8 * pname)
{
result=f_mount(&fatfs,(const TCHAR*)pname,);
result = f_open(&Fontfile,(const TCHAR*)pname,FA_OPEN_EXISTING|FA_READ|FA_OPEN_ALWAYS);
if(result != FR_OK)
{ return; } GUI_XBF_CreateFont(&XBF_Font, // Pointer to GUI_FONT structure in RAM
&XBF_Data, // Pointer to GUI_XBF_DATA structure in RAM
GUI_XBF_TYPE_PROP_AA4_EXT, // Font type to be created
_cbGetData, // Pointer to callback function
&Fontfile // Pointer to be passed to GetData function
);
} void Font_Init(u8 * pname)
{
_ShowXBF(pname);
GUI_UC_SetEncodeUTF8();
}
3: 使用文字小工具创建 TEXT
Font_Init("0:/FONT/KoPu.xbf"); hItem=TEXT_CreateEx( , ,ICON_TEXT_SIZE_X,ICON_TEXT_SIZE_Y,,WM_CF_SHOW,TEXT_CF_HCENTER,GUI_ID_TEXT0, "IO输出");
TEXT_SetTextColor(hItem, GUI_DARKBLUE);
TEXT_SetFont(hItem,&XBF_Font);
这里特别注意的是 文件的编码格式选择UTF-8编码 要不显示会乱码
IAR环境下设置文件编码的方法:
第一种方法:菜单Toos->Options->Editor
第二种方法:在编辑器的编辑区点右键”Character Encoding“选项, 选择“Convert to UTF-8”
最新文章
- SqlServer性能检测和优化工具使用详细(转)
- iOS 跳转到系统的设置界面
- Pylot压力测试(linux)
- 《C与指针》第一章练习
- JS中的自定义属性
- 【JavaScript】AJAX总结(异步JavaScript和XML)
- JavaScript DOM高级程序设计 5动态修改样式和层叠样式表2--我要坚持到底!
- Socket解决粘包问题1
- Unix/Linux环境C编程入门教程(36) 初识shell
- MOSS程序中如何发Mail?
- js中的json对象
- ListBox 如何改变某行的字体颜色
- Tiny64140之初始化时钟
- java‘小秘密’系列(一)---String、StringBuffer、StringBuilder
- Struts2内部执行过程
- 求二叉树深度和copy二叉树
- SQL SERVER服务器登录名、角色、数据库用户、角色、架构的关系
- inet_pton, inet_ntop
- 构造方法为private与类修饰符为final
- jedis单机版应用
热门文章
- Linux 双网卡 不同网段 网络互通
- 解决Ubuntu下gedit中文乱码的情况
- 2017.2.28 activiti实战--第五章--用户与组及部署管理(二)部署流程资源
- linux中read用法
- Node.js 抓取电影天堂新上电影节目单及ftp链接
- 在 Selenium 中让 PhantomJS 执行它的 API
- Atitit.ati&;#160;dwr的原理and设计&;#160;attilax&;#160;总结&;#160;java&;#160;php&;#160;版本号
- sprint3 【每日scrum】 TD助手站立会议第二天
- HDU BestCoder Round #1 1002 项目管理
- dede中可以用系统设置中的添加新变量来调用频繁改变的文字内容