硬汉嵌入式论坛

 找回密码
 立即注册
查看: 17453|回复: 19
收起左侧

[emWin] emWin 外挂字库显示汉字(支持GB2312)

[复制链接]

2

主题

12

回帖

22

积分

新手上路

积分
22
发表于 2014-3-31 16:57:15 | 显示全部楼层 |阅读模式
这一阵在研究在emWin。在显示汉字的时候,如果只显示数量很少的几个固定汉字很容易实现。但是要把整个字库放进去的时候,就需要消耗很多ROM了。于是就想怎么把汉字库用外挂Flash中。
首先,我这个人比较懒,于是在网上找了一通。终于在一个网站上找到一篇文章,说是用外挂的高通字库。心里那个高兴呀,赶快去看。结果又是注册,又是登录,又是积分。一路折腾下来,两小时过去了,我还是下载不了,连在线看都看不到一个字。心里火大了,有什么了不起的,你能玩的,我也能搞定。花了两天时间研究3.98的源码,终于让我搞定了。
我用的是MDK454里面的emWin库,版本为5.16。如果你的不能进入自定义的显示函数,请在 GuiConf.h 中增加以下宏定义   
#define GUI_COMPILER_SUPPORTS_FP     1
现在把方法公布于下:

实现起来很简单
void User_GuiDispChar(U16 c)
{
}
int User_GuiGetCharDispX(U16, int * pSizeX)
{
    *pSizeX = 16;    //返回实际字符宽度,也可以返回0
    return 0;
}
void User_GuiGetFontInfo(const GUI_FONT GUI_UNI_PTR * pFont,  GUI_FONTINFO * pfi)
{//如果不调用GUI_GetFontInfo,可以为空函数
}
char User_GuiIsInFont(const GUI_FONT GUI_UNI_PTR * pFont, U16 c)
{//如果不调用GUI_IsInFont,可以为空函数
    return 0;
}
int User_GuiGetCharInfo(U16 c, GUI_CHARINFO_EXT * pInfo)
{
   return 0;
}
//上面这几个函数可以就这样空着。
//下面这个函数是获取字符串中字符的个数,比如ASCII一个字节为一个字符,GB2312两个字节为一个字符,
//我这里做了最简单的处理,直接返回由 User_Gui_GetLineLen 返回的字节长度
int User_Gui_GetLineDistX(const char  GUI_UNI_PTR *s, int Len)
{
    return (Len);
}
int User_Gui_GetLineLen(const char GUI_UNI_PTR *s, int MaxLen)
{
    return (strlen(s));
}

//下面这个函数传入的字符串就是你调用emWin中的字符串显示函数所传入的字符串
//传入的长度就是 User_Gui_GetLineDistX 返回的长度
void User_Gui_DispLine(const char GUI_UNI_PTR *s, ine Len)
{//在这个函数里面实现你自己的字符显示函数
}

static const tGUI_ENC_APIList user_font_api_list =
{
     User_Gui_GetLineDistX,
     User_Gui_GetLineLen,
     User_Gui_DispLine,
};

GUI_FONT user_font =
{
     User_GuiDispChar,
     User_GuiGetCharDistX,
     User_GuiGetFontInfo,
     User_GuiIsInFont,
     User_GuiGetCharInfo,
     &user_font_api_list,
     16, 16, 1, 1,
      0, 14, 7, 11
};

在使用自定义字库前,先调用下面的函数
GUI_SetFont(&user_font);
然后就可以调用GUI的字符串显示函数了。
比如
GUI_DispStringAt("汉字显示测试");


这种方法,不用转码,也不用UTF-8格式,可以直接用GB2312编码。
回复

使用道具 举报

2

主题

12

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2014-3-31 17:03:50 | 显示全部楼层
这个方法是我在LPC1778上测试通过的。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107604
QQ
发表于 2014-3-31 17:17:41 | 显示全部楼层
感谢楼主分享,置酷。另外楼主说这种方法就可以用高通字库吗
回复

使用道具 举报

2

主题

12

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2014-3-31 17:45:13 | 显示全部楼层
任何字库都可以,因为字符串显示函数是你自己写的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107604
QQ
发表于 2014-3-31 17:51:20 | 显示全部楼层

回 sqqdfny 的帖子

sqqdfny:任何字库都可以,因为字符串显示函数是你自己写的 (2014-03-31 17:45) 
这么给力,明天我就尝试下。
回复

使用道具 举报

2

主题

12

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2014-3-31 22:17:40 | 显示全部楼层
刚看了一下,由于这个网站不能直接粘贴,帖子的内容是我用键盘敲上去的,有两个地方字母敲错了,想直接copy去用的人注意一下。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107604
QQ
发表于 2014-3-31 22:19:32 | 显示全部楼层

回 sqqdfny 的帖子

sqqdfny:刚看了一下,由于这个网站的能直接粘贴,帖子的内容是我用键盘敲上去的,有两个地方字母敲错了,想直接copy去用的人注意一下。 (2014-03-31 22:17) 
可以直接复制粘贴的,一点点敲上去的,很给力,太感谢了。
帖子你可以随时重新编辑的。
回复

使用道具 举报

2

主题

12

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2014-4-3 11:24:56 | 显示全部楼层
前几天可能是我电脑出问题了,不能粘贴,现在把我的实现完整代码贴出来给大家参考
const u8 ascii_bitmap[] =
{
    /*   */
/*------------------------------------------------------------------------------
;  源文件 / 文字 :  
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* ! */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : !
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0xFF,0x10,0x00,0x00,0x18,0x18,0x00,0x00,
/* " */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : "
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x12,0x36,0x24,0x48,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* # */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : #
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x24,0x24,0x24,0xFE,0x48,0xFF,0x48,0xFE,0x48,0x48,0x48,0x00,0x00,
/* $ */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : $
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x10,0x38,0x54,0x54,0x50,0x30,0xFF,0x14,0x14,0x54,0x54,0x38,0x10,0x10,
/* % */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : %
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x44,0xA4,0xA8,0xA8,0xA8,0xFF,0x1A,0x2A,0x2A,0x2A,0x44,0x00,0x00,
/* & */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : &
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x30,0x48,0x48,0x48,0x50,0xFF,0xA4,0x94,0x88,0x89,0x76,0x00,0x00,
/* ' */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : '
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x60,0x60,0x20,0xC0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* ( */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : (
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x02,0x04,0x08,0x08,0x10,0x10,0x10,0xFF,0x10,0x10,0x08,0x08,0x04,0x02,0x00,
/* ) */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : )
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x40,0x20,0x10,0x10,0x08,0x08,0x08,0xFF,0x08,0x08,0x10,0x10,0x20,0x40,0x00,
/* * */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : *
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x10,0x10,0xD6,0x38,0xFF,0xD6,0x10,0x10,0x00,0x00,0x00,0x00,
/* + */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : +
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0x00,0x00,0x00,
/* , */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : ,
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x60,0x60,0x20,0xC0,
/* - */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : -
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* . */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : .
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x60,0x60,0x00,0x00,
/* / */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : /
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x01,0x02,0x02,0x04,0x04,0x08,0xFF,0x10,0x10,0x20,0x20,0x40,0x40,0x00,
/* 0 */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : 0
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0xFF,0x42,0x42,0x42,0x24,0x18,0x00,0x00,
/* 1 */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : 1
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,
/* 2 */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : 2
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0xFF,0x08,0x10,0x20,0x42,0x7E,0x00,0x00,
/* 3 */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : 3
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0xFF,0x02,0x02,0x42,0x44,0x38,0x00,0x00,
/* 4 */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : 4
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0xFF,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00,
/* 5 */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : 5
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0xFF,0x02,0x02,0x42,0x44,0x38,0x00,0x00,
/* 6 */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : 6
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0xFF,0x42,0x42,0x42,0x24,0x18,0x00,0x00,
/* 7 */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : 7
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0xFF,0x10,0x10,0x10,0x10,0x10,0x00,0x00,
/* 8 */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : 8
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0xFF,0x24,0x42,0x42,0x42,0x3C,0x00,0x00,
/* 9 */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : 9
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0xFF,0x1A,0x02,0x02,0x24,0x38,0x00,0x00,
/* : */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : :
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0xFF,0x00,0x00,0x00,0x18,0x18,0x00,0x00,
/* ; */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : ;
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0xFF,0x00,0x00,0x00,0x00,0x10,0x10,0x20,
/* < */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : <
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x02,0x04,0x08,0x10,0x20,0xFF,0x20,0x10,0x08,0x04,0x02,0x00,0x00,
/* = */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : =
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0xFF,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,
/* > */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : >
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x40,0x20,0x10,0x08,0x04,0xFF,0x04,0x08,0x10,0x20,0x40,0x00,0x00,
/* ? */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : ?
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x3C,0x42,0x42,0x62,0x02,0xFF,0x08,0x08,0x00,0x18,0x18,0x00,0x00,
/* @ */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : @
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x38,0x44,0x5A,0xAA,0xAA,0xFF,0xAA,0xB4,0x42,0x44,0x38,0x00,0x00,
/* A */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : A
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x10,0x10,0x18,0x28,0x28,0xFF,0x3C,0x44,0x42,0x42,0xE7,0x00,0x00,
/* B */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : B
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0xF8,0x44,0x44,0x44,0x78,0xFF,0x42,0x42,0x42,0x44,0xF8,0x00,0x00,
/* C */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : C
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x3E,0x42,0x42,0x80,0x80,0xFF,0x80,0x80,0x42,0x44,0x38,0x00,0x00,
/* D */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : D
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0xF8,0x44,0x42,0x42,0x42,0xFF,0x42,0x42,0x42,0x44,0xF8,0x00,0x00,
/* E */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : E
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0xFC,0x42,0x48,0x48,0x78,0xFF,0x48,0x40,0x42,0x42,0xFC,0x00,0x00,
/* F */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : F
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0xFC,0x42,0x48,0x48,0x78,0xFF,0x48,0x40,0x40,0x40,0xE0,0x00,0x00,
/* G */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : G
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x3C,0x44,0x44,0x80,0x80,0xFF,0x8E,0x84,0x44,0x44,0x38,0x00,0x00,
/* H */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : H
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0xE7,0x42,0x42,0x42,0x42,0xFF,0x42,0x42,0x42,0x42,0xE7,0x00,0x00,
/* I */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : I
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x7C,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,
/* J */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : J
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x3E,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0x08,0x88,0xF0,
/* K */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : K
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0xEE,0x44,0x48,0x50,0x70,0xFF,0x48,0x48,0x44,0x44,0xEE,0x00,0x00,
/* L */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : L
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0xE0,0x40,0x40,0x40,0x40,0xFF,0x40,0x40,0x40,0x42,0xFE,0x00,0x00,
/* M */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : M
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0xEE,0x6C,0x6C,0x6C,0x6C,0xFF,0x54,0x54,0x54,0x54,0xD6,0x00,0x00,
/* N */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : N
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0xC7,0x62,0x62,0x52,0x52,0xFF,0x4A,0x4A,0x46,0x46,0xE2,0x00,0x00,
/* O */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : O
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x38,0x44,0x82,0x82,0x82,0xFF,0x82,0x82,0x82,0x44,0x38,0x00,0x00,
/* P */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : P
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0xFC,0x42,0x42,0x42,0x42,0xFF,0x40,0x40,0x40,0x40,0xE0,0x00,0x00,
/* Q */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : Q
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x38,0x44,0x82,0x82,0x82,0xFF,0x82,0xB2,0xCA,0x4C,0x38,0x06,0x00,
/* R */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : R
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0xFC,0x42,0x42,0x42,0x7C,0xFF,0x48,0x44,0x44,0x42,0xE3,0x00,0x00,
/* S */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : S
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x3E,0x42,0x42,0x40,0x20,0xFF,0x04,0x02,0x42,0x42,0x7C,0x00,0x00,
/* T */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : T
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0xFE,0x92,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0x38,0x00,0x00,
/* U */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : U
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0xE7,0x42,0x42,0x42,0x42,0xFF,0x42,0x42,0x42,0x42,0x3C,0x00,0x00,
/* V */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : V
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0xE7,0x42,0x42,0x44,0x24,0xFF,0x28,0x28,0x18,0x10,0x10,0x00,0x00,
/* W */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : W
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0xD6,0x92,0x92,0x92,0x92,0xFF,0xAA,0x6C,0x44,0x44,0x44,0x00,0x00,
/* X */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : X
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x18,0xFF,0x18,0x24,0x24,0x42,0xE7,0x00,0x00,
/* Y */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : Y
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0xEE,0x44,0x44,0x28,0x28,0xFF,0x10,0x10,0x10,0x10,0x38,0x00,0x00,
/* Z */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : Z
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x7E,0x84,0x04,0x08,0x08,0xFF,0x20,0x20,0x42,0x42,0xFC,0x00,0x00,
/* [ */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : [
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x1E,0x10,0x10,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0x10,0x1E,0x00,
/* \\ */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : \\
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x40,0x40,0x20,0x20,0x10,0x10,0xFF,0x08,0x08,0x04,0x04,0x04,0x02,0x02,
/* ] */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : ]
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x78,0x08,0x08,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0x08,0x78,0x00,
/* ^ */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : ^
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x1C,0x22,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* _ */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : _
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
/* ` */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : `
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* a */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : a
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0xFF,0x1E,0x22,0x42,0x42,0x3F,0x00,0x00,
/* b */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : b
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0xC0,0x40,0x40,0x40,0x58,0xFF,0x42,0x42,0x42,0x64,0x58,0x00,0x00,
/* c */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : c
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0xFF,0x40,0x40,0x40,0x22,0x1C,0x00,0x00,
/* d */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : d
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x06,0x02,0x02,0x02,0x1E,0xFF,0x42,0x42,0x42,0x26,0x1B,0x00,0x00,
/* e */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : e
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0xFF,0x7E,0x40,0x40,0x42,0x3C,0x00,0x00,
/* f */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : f
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x0F,0x11,0x10,0x10,0x7E,0xFF,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,
/* g */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : g
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0xFF,0x44,0x38,0x40,0x3C,0x42,0x42,0x3C,
/* h */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : h
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0xC0,0x40,0x40,0x40,0x5C,0xFF,0x42,0x42,0x42,0x42,0xE7,0x00,0x00,
/* i */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : i
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x70,0xFF,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,
/* j */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : j
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x1C,0xFF,0x04,0x04,0x04,0x04,0x04,0x44,0x78,
/* k */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : k
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0xC0,0x40,0x40,0x40,0x4E,0xFF,0x50,0x68,0x48,0x44,0xEE,0x00,0x00,
/* l */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : l
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x70,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,
/* m */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : m
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x49,0x49,0x49,0x49,0xED,0x00,0x00,
/* n */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : n
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDC,0xFF,0x42,0x42,0x42,0x42,0xE7,0x00,0x00,
/* o */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : o
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0xFF,0x42,0x42,0x42,0x42,0x3C,0x00,0x00,
/* p */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : p
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0xFF,0x42,0x42,0x42,0x44,0x78,0x40,0xE0,
/* q */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : q
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0xFF,0x42,0x42,0x42,0x22,0x1E,0x02,0x07,
/* r */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : r
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEE,0xFF,0x20,0x20,0x20,0x20,0xF8,0x00,0x00,
/* s */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : s
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0xFF,0x40,0x3C,0x02,0x42,0x7C,0x00,0x00,
/* t */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : t
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x7C,0xFF,0x10,0x10,0x10,0x10,0x0C,0x00,0x00,
/* u */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : u
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0xFF,0x42,0x42,0x42,0x46,0x3B,0x00,0x00,
/* v */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : v
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE7,0xFF,0x24,0x24,0x28,0x10,0x10,0x00,0x00,
/* w */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : w
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD7,0xFF,0x92,0xAA,0xAA,0x44,0x44,0x00,0x00,
/* x */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : x
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6E,0xFF,0x18,0x18,0x18,0x24,0x76,0x00,0x00,
/* y */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : y
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE7,0xFF,0x24,0x24,0x28,0x18,0x10,0x10,0xE0,
/* z */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : z
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0xFF,0x08,0x10,0x10,0x22,0x7E,0x00,0x00,
/* { */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : {
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x03,0x04,0x04,0x04,0x04,0x04,0x08,0xFF,0x04,0x04,0x04,0x04,0x04,0x03,0x00,
/* | */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : |
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
/* } */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : }
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x00,0x60,0x10,0x10,0x10,0x10,0x10,0x08,0xFF,0x10,0x10,0x10,0x10,0x10,0x60,0x00,
/* ~ */
/*------------------------------------------------------------------------------
;  源文件 / 文字 : ~
;  宽×高(像素): 8×16
------------------------------------------------------------------------------*/
0x30,0x4C,0x43,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
//===================================================================

extern GUI_DEVICE * pUserDevice;
//===================================================================
u8 GetFont16x16fromEeprom(u8 *buf,u16 data)
{
  u32 adr = (((data >> 8) - 0xB0) * 94 + ((data & 0xff) - 0xA1));
//     if(adr >= 3761) adr -= 5;                        //20131025
    adr = adr * 32 + FONT_BASE_ADDR;
    W25XxxReadData(adr, buf, 32);
    return(SUCC);
}

void GuiDispCharHz(u16 gb2312)
{
    GUI_DRAWMODE DrawMode,OldDrawMode;
    u8 buf[32];
   
    GetFont16x16fromEeprom(buf, gb2312);  //这里是从字库读取字模数据
   
    DrawMode = GUI_Context.TextMode;
    OldDrawMode  = LCD_SetDrawMode(DrawMode);
    pUserDevice->pDeviceAPI->pfDrawBitmap(pUserDevice,
                                          GUI_Context.DispPosX, GUI_Context.DispPosY,
                                          16, 16, 1, 2,
                                          (const U8 GUI_UNI_PTR *)buf,
                                          0, &LCD_BKCOLORINDEX);

    LCD_SetDrawMode(OldDrawMode); /* Restore draw mode */
    GUI_Context.DispPosX += 16;//pCharInfo->XDist * GUI_Context.pAFont->XMag;
}
//===================================================================
void GuiDispCharAscii(u16 ascii)
{
    GUI_DRAWMODE DrawMode,OldDrawMode;
   
    if(ascii < 0x20 || ascii > 127) return;
    if(ascii == 127) ascii = 0x20;
   
    DrawMode = GUI_Context.TextMode;
    OldDrawMode  = LCD_SetDrawMode(DrawMode);
    pUserDevice->pDeviceAPI->pfDrawBitmap(pUserDevice,
                                          GUI_Context.DispPosX, GUI_Context.DispPosY,
                                          8, 16, 1, 1,
                                          (const U8 GUI_UNI_PTR *)(ascii_bitmap + ((ascii - 0x20) << 4)),
                                          0, &LCD_BKCOLORINDEX);
    LCD_SetDrawMode(OldDrawMode); /* Restore draw mode */
    GUI_Context.DispPosX += 8;
}
//===================================================================
void User_GuiDispChar(U16 c)
{
    if (c == '\\n')
    {
    GUI_DispNextLine();
  }
    else
    {
    if (c != '\\r')
        {
            if(c > 127)
            {
                GuiDispCharHz(c);
            }
            else
            {
                GuiDispCharAscii(c);
            }
        }
    }
}

int User_GuiGetCharDistX(U16 c, int *pSizeX)
{
    *pSizeX = 16;
    return (1);
}
void User_GuiGetFontInfo(const GUI_FONT GUI_UNI_PTR * pFont, GUI_FONTINFO * pfi)
{
    GUI_USE_PARA(pFont);
  pfi->Flags = GUI_FONTINFO_FLAG_PROP;
}
char User_GuiIsInFont(const GUI_FONT GUI_UNI_PTR * pFont, U16 c)
{
    const GUI_FONT_PROP GUI_UNI_PTR* pProp = GUI_Context.pAFont->p.pProp;
    if((c >= pProp->First) && (c <= pProp->Last)) return (1);
    return (0);
}
int  User_GuiGetCharInfo (U16P c, GUI_CHARINFO_EXT * pInfo)
{
    return (0);
}

int  User_GUI_GetLineDistX(const char GUI_UNI_PTR *s, int Len)
{
    return (Len);
}

int  User_GUI_GetLineLen(const char GUI_UNI_PTR *s, int MaxLen)
{
    return (strlen(s));
}

void User_GL_DispLine(const char GUI_UNI_PTR *s, int Len)
{
    u16 c;
// //     GUI_X_Lock();
    while(Len > 0)
    {
        c = *s ++;
        if(c > 127)
        {
            c = (c << 8) + *s ++;
            Len --;
        }
        
        User_GuiDispChar(c);
        Len --;
    }
//     GUI_X_Unlock();
}

static const tGUI_ENC_APIList user_font_api_list =
{
    User_GUI_GetLineDistX,
    User_GUI_GetLineLen,
    User_GL_DispLine,
};

static const GUI_CHARINFO user_char_info =
{
    16, 16, 2, 0
};

static const GUI_FONT_PROP GUI_Font_User_Prop = {
   0xb0a1 /* first character */
  ,0xf7fe /* last character  */
  ,&user_char_info /* address of first character */
  ,NULL /* pointer to next GUI_FONT_PROP */
};

static GUI_FONT user_font =
{
    User_GuiDispChar,
    User_GuiGetCharDistX,
  User_GuiGetFontInfo,
    User_GuiIsInFont,
    User_GuiGetCharInfo,           
  &user_font_api_list,
    16, 16, 1, 1,
    &GUI_Font_User_Prop,
    14, 7, 11
};

GUI_FONT * SetFont_User(void)
{
    return ((GUI_FONT *)GUI_SetFont(&user_font));
}
//===================================================================

//end files



显示代码汉字
pdata = SetFont_User();
    GUI_DispStringAt("汉字显OK示测试", 7, 20);
    GUI_SetFont((GUI_FONT *)pdata);


我这里用的是GB2312 + ASCII 编码

再上一张图片

IMAG0102.jpg
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107604
QQ
发表于 2014-4-3 20:26:42 | 显示全部楼层

回 sqqdfny 的帖子

sqqdfny:前几天可能是我电脑出问题了,不能粘贴,现在把我的实现完整代码贴出来给大家参考
const u8 ascii_bitmap[] =
{
    /*   */
/*------------------------------------------------------------------------------
....... (2014-04-03 11:24) 
太感谢兄弟了,赞
回复

使用道具 举报

0

主题

2

回帖

0

积分

新手上路

积分
0
发表于 2014-5-7 19:06:09 | 显示全部楼层

回 sqqdfny 的帖子

请问下,这样的话如果控件上的文字需要为中文的,怎么取到控件上需要显示的字体的颜色和背景色呢?
回复

使用道具 举报

0

主题

2

回帖

0

积分

新手上路

积分
0
发表于 2014-5-7 19:46:53 | 显示全部楼层
解决方案:用GUI_CONTEXT里面的Color和BkColor,但是要设置RA8875里面文字背景色为透明
回复

使用道具 举报

9

主题

59

回帖

86

积分

初级会员

积分
86
发表于 2014-7-31 21:18:00 | 显示全部楼层
这个先记号一下,回头研究。。
回复

使用道具 举报

1

主题

7

回帖

1

积分

新手上路

积分
1
发表于 2015-6-5 17:43:39 | 显示全部楼层
楼主,可否共享下工程代码? 谢谢
回复

使用道具 举报

1

主题

12

回帖

15

积分

新手上路

积分
15
发表于 2015-8-14 16:30:36 | 显示全部楼层
mark。。。。。。。。。
回复

使用道具 举报

0

主题

5

回帖

0

积分

新手上路

积分
0
发表于 2015-8-21 16:28:56 | 显示全部楼层
受教了,谢谢分享。
回复

使用道具 举报

1

主题

17

回帖

20

积分

新手上路

积分
20
发表于 2016-7-8 22:44:05 | 显示全部楼层
我也学习学习,谢谢楼主
我一直都是优,你叫我怎么从良.
回复

使用道具 举报

4

主题

21

回帖

33

积分

新手上路

积分
33
发表于 2016-7-12 16:59:15 | 显示全部楼层
【能接emWin的SPI串口屏】
GLCD功能类似于SPI串口屏,只是SPI接口通信更快速,以至能作为emWin(第三方界面软件库)的图形显示屏,弥补emWin使用字库/图片麻烦以及刷屏慢的缺点,这样emWin做界面就更精美、便捷!
emWin界面软件库是运行在用户CPU中的;GLCD负责储存字库和图片,以及接收由emWin发出的绘图指令,并且执行这些绘图指令以显示文字、图片、2D图形等,绘图指令代替像素操作可大大减轻用户CPU的负担;GLCD还管理触摸屏、鼠标、键盘、蜂鸣器、RTC时钟等外设。
更多介绍请看:www.neqee.com
精美、便捷的emWin界面设计-GLCD
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107604
QQ
发表于 2016-7-13 00:33:13 | 显示全部楼层

回 g_lcd 的帖子

g_lcd:【能接emWin的SPI串口屏】
GLCD功能类似于SPI串口屏,只是SPI接口通信更快速,以至能作为emWin(第三方界面软件库)的图形显示屏,弥补emWin使用字库/图片麻烦以及刷屏慢的缺点,这样emWin做界面就更精美、便捷!
emWin界面软件库是运行在用户CPU中的;GLCD负责储存字库和图片,以及 .. (2016-07-12 16:59) 
兄弟可以单独发个帖子的,也算是我们论坛常来的网友了[s:150]
回复

使用道具 举报

4

主题

21

回帖

33

积分

新手上路

积分
33
发表于 2016-7-13 10:54:18 | 显示全部楼层

回 eric2013 的帖子

eric2013:兄弟可以单独发个帖子的,也算是我们论坛常来的网友了[s:150] (2016-07-13 00:33) 
[s:142]
精美、便捷的emWin界面设计-GLCD
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-8 00:18 , Processed in 0.312205 second(s), 34 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表