<delect id="jxvjd"></delect>

<p id="jxvjd"><output id="jxvjd"><delect id="jxvjd"></delect></output></p><p id="jxvjd"><output id="jxvjd"><menuitem id="jxvjd"></menuitem></output></p>
<p id="jxvjd"><output id="jxvjd"><menuitem id="jxvjd"></menuitem></output></p>
<p id="jxvjd"><output id="jxvjd"></output></p>
<p id="jxvjd"><output id="jxvjd"></output></p>

<pre id="jxvjd"></pre><pre id="jxvjd"></pre>
<noframes id="jxvjd">

<noframes id="jxvjd">
<pre id="jxvjd"></pre>

<p id="jxvjd"><output id="jxvjd"><menuitem id="jxvjd"></menuitem></output></p><pre id="jxvjd"></pre>

<pre id="jxvjd"></pre>
<p id="jxvjd"><delect id="jxvjd"></delect></p>

<pre id="jxvjd"></pre><pre id="jxvjd"></pre><p id="jxvjd"><output id="jxvjd"><delect id="jxvjd"></delect></output></p>

<p id="jxvjd"></p>

<p id="jxvjd"></p>

<pre id="jxvjd"><delect id="jxvjd"></delect></pre>
<p id="jxvjd"><output id="jxvjd"><menuitem id="jxvjd"></menuitem></output></p>

<p id="jxvjd"></p>
<pre id="jxvjd"><pre id="jxvjd"></pre></pre>

<output id="jxvjd"></output>

<pre id="jxvjd"><output id="jxvjd"></output></pre>

<p id="jxvjd"><output id="jxvjd"><menuitem id="jxvjd"></menuitem></output></p> <pre id="jxvjd"></pre>
<output id="jxvjd"><delect id="jxvjd"><menuitem id="jxvjd"></menuitem></delect></output>

<pre id="jxvjd"><output id="jxvjd"></output></pre>

<p id="jxvjd"></p>
<pre id="jxvjd"><delect id="jxvjd"></delect></pre>

<pre id="jxvjd"><output id="jxvjd"><menuitem id="jxvjd"></menuitem></output></pre>

<pre id="jxvjd"><output id="jxvjd"></output></pre>

<pre id="jxvjd"></pre>
<p id="jxvjd"><delect id="jxvjd"></delect></p><p id="jxvjd"></p>

<noframes id="jxvjd"><pre id="jxvjd"><p id="jxvjd"></p></pre><p id="jxvjd"></p>
<noframes id="jxvjd"><p id="jxvjd"><output id="jxvjd"></output></p>

<p id="jxvjd"><delect id="jxvjd"></delect></p>

<noframes id="jxvjd"><output id="jxvjd"></output>

<pre id="jxvjd"></pre>

<p id="jxvjd"></p>
<pre id="jxvjd"><output id="jxvjd"></output></pre>

<noframes id="jxvjd"><p id="jxvjd"></p>
<pre id="jxvjd"></pre>
<pre id="jxvjd"></pre>
<pre id="jxvjd"></pre><p id="jxvjd"><output id="jxvjd"><delect id="jxvjd"></delect></output></p>
<pre id="jxvjd"><p id="jxvjd"></p></pre>

<p id="jxvjd"></p>
<p id="jxvjd"></p>
<p id="jxvjd"></p>

<pre id="jxvjd"><p id="jxvjd"></p></pre><pre id="jxvjd"><p id="jxvjd"></p></pre><p id="jxvjd"><output id="jxvjd"></output></p>
<p id="jxvjd"></p>

<p id="jxvjd"><output id="jxvjd"><menuitem id="jxvjd"></menuitem></output></p>

<output id="jxvjd"><delect id="jxvjd"></delect></output>
<pre id="jxvjd"><p id="jxvjd"></p></pre>

<pre id="jxvjd"><output id="jxvjd"></output></pre>

<p id="jxvjd"></p>

<pre id="jxvjd"><p id="jxvjd"><menuitem id="jxvjd"></menuitem></p></pre>

<pre id="jxvjd"></pre>

<pre id="jxvjd"><p id="jxvjd"></p></pre>
<p id="jxvjd"><delect id="jxvjd"></delect></p>
<noframes id="jxvjd"><pre id="jxvjd"><p id="jxvjd"></p></pre>

<p id="jxvjd"></p>
<pre id="jxvjd"><p id="jxvjd"></p></pre>
<p id="jxvjd"></p>

<noframes id="jxvjd">
<pre id="jxvjd"></pre>
<pre id="jxvjd"></pre><pre id="jxvjd"><p id="jxvjd"><menuitem id="jxvjd"></menuitem></p></pre>

<noframes id="jxvjd">

<p id="jxvjd"></p>

<p id="jxvjd"><menuitem id="jxvjd"></menuitem></p>

<pre id="jxvjd"><p id="jxvjd"><delect id="jxvjd"></delect></p></pre>

打印

[资料分享] [emWin] xbf字库 放到外置的SPI FLASH中

[复制链接]
256|1
跳转到指定楼层
楼主
下面这几行代码,相信看过emWin手册的人,都不会陌生。
static GUI_FONT xbfFont;                       /* GUI_FONT structure in RAM */
static GUI_XBF_DATA XBF_Data;        /* GUI_XBF_DATA structure in RAM */

static int _cbGetData(U32 Off, U16 NumBytes, void * pVoid, void * pBuffer)
{
    W25XxxReadData(FONT_BASE_ADDR + Off, pBuffer, NumBytes);
    return (0);
}

void CreateXBF_Font(void)
{
    GUI_XBF_CreateFont(&xbfFont,                              /* Pointer to GUI_FONT structure */
                                              &XBF_Data,                         /* Pointer to GUI_XBF_DATA structure */
                                              GUI_XBF_TYPE_PROP,    /* Font type to be created */
                                              _cbGetData,                         /* Pointer to callback function */
                                              NULL);                                  /* Pointer to be passed to callback */
}

//===================================================================
GUI_FONT * SetFont_Xbf(void)
{
    return ((GUI_FONT *)GUI_SetFont(&xbfFont));
}
//===================================================================


FONT_BASE_ADDR  这是XBF文件在FLASH中的起始地址
W25XxxReadData    这是从FLASH中读取数据的函数
关键是这个函数  static int _cbGetData(U32 Off, U16 NumBytes, void * pVoid, void * pBuffer)
Off  是XBF文件的内部偏移
pVoid 是GUI_XBF_CreateFont的最后一个参数,在这里我们不用这个参数。
pBuffer 读回来的数据就到这里了,剩下的就是emWin的事了。



附件给一个可用的FontCvt版本,我从网上找的,已经验证过的,不敢藏私,分享给大家用。用这个文件生成一个XBF文件,把文件下载到FLASH中就可以了。

emWin的字库采用的索引表的方式查找字符,在调用GUI_XBF_CreateFont创建XBF字库时,会读取字库的索引信息填充xbfFont,XBF_Data这两个结构体。

最后上一个简单的例程。

CreateXBF_Font();                                                    //创建XBF字体
GUI_UC_SetEncodeUTF8();                                      //一定要设置这个

GUI_SetFont(GUI_FONT_6X8_ASCII);
GUI_DispStringAt("GUI Start Succ!", 7, 4);

SetFont_Xbf();                                                         //然后像使用其它字体一样,设置XBF字库为当前字体
GUI_DispStringAt("汉字显示测试OK!", 4, 20);         //用起来就是这么简单
GUI_DispStringAt("123ABC四五六七.", 4, 40);

使用特权

评论回复
沙发
 楼主 | 2019-5-22 12:00 | 只看该作者
上传例程的图片和字符转换的软件

2ab6923468a.jpeg (461.85 KB, 下载次数: 0)

2ab6923468a.jpeg

FontCvt_V520.rar

147.56 KB, 下载次数: 6

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

热门推荐上一条 /4 下一条

在线客服 快速回复 返回顶部 返回列表
加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】|