硬汉嵌入式论坛

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

[emWin教程入门篇] 第六期:emWin5.20汉字显示方法二(将字库放到外部Flash,SD卡等)

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106692
QQ
发表于 2013-9-16 20:56:09 | 显示全部楼层 |阅读模式
特别说明:pdf版60期emWin教程已经发布:
                  http://www.armbbs.cn/forum.php?mod=viewthread&tid=2932
                  armfly-x2,x3,v2,v3,v5开发板裸机和带系统的emWin工程已经全部建立,链接如下:
                  http://www.armbbs.cn/forum.php?mod=viewthread&tid=1830
       本期主要讲如何将字库放置到外部存储器的方法,这里以放到SD卡为例,放到其他存储器是一样的。
其实用官方提供的XBF方式,将字库放到外部字库是最合适的,而且能够使用抗锯齿,暂时还没有调试出
来,后面有机会了再做尝试,这里用的外置字库的方法还是UCGUI时代遗留下来的。现在贴个图让大家看
一下实际的显示效果,有一点在这里必须的说明一下,外置字库到SD卡显示大字体的时候会非常的卡。
0.PNG

本期分为三个小节:
6. 1  移植方法
6. 2  点阵字体的说明
6. 3  将生成的字体移植到armfly - v5开发板上面
6. 4  实验总结



6. 1  移植方法
   6.1.1  要添加两个文件,一个是 GUI_UC_EncodeNone.c 用于解码非unicode编码的字符,程序如下
  1. #include "GUI_Private.h"
  2. /*********************************************************************
  3. *
  4. *       Static code
  5. *
  6. **********************************************************************
  7. */
  8. /*********************************************************************
  9. *
  10. *       _GetCharCode
  11. *
  12. * Purpose:
  13. *   Return the UNICODE character code of the current character.
  14. */
  15. static U16 _GetCharCode(const char GUI_UNI_PTR * s) {
  16.   if((*s) > 0xA0)
  17.   {
  18.     return *(const U16 GUI_UNI_PTR *)s;
  19.   }
  20.   return *(const U8 GUI_UNI_PTR *)s;
  21. }
  22. /*********************************************************************
  23. *
  24. *       _GetCharSize
  25. *
  26. * Purpose:
  27. *   Return the number of bytes of the current character.
  28. */
  29. static int _GetCharSize(const char GUI_UNI_PTR * s) {
  30.   GUI_USE_PARA(s);
  31.   if((*s) > 0xA0)
  32.   {
  33.     return 2;
  34.   }
  35.   return 1;
  36. }
  37. /*********************************************************************
  38. *
  39. *       _CalcSizeOfChar
  40. *
  41. * Purpose:
  42. *   Return the number of bytes needed for the given character.
  43. */
  44. static int _CalcSizeOfChar(U16 Char) {
  45.   GUI_USE_PARA(Char);
  46.   if(Char > 0xA0A0)
  47.   {
  48.     return 2;
  49.   }
  50.   return 1;
  51. }
  52. /*********************************************************************
  53. *
  54. *       _Encode
  55. *
  56. * Purpose:
  57. *   Encode character into 1/2/3 bytes.
  58. */
  59. static int _Encode(char *s, U16 Char) {
  60.   if(Char > 0xA0A0)
  61.   {
  62.     *((U16 *)s) = (U16)(Char);
  63.     return 2;
  64.   }
  65.   *s = (U8)(Char);
  66.   return 1;
  67. }
  68. /*********************************************************************
  69. *
  70. *       Static data
  71. *
  72. **********************************************************************
  73. */
  74. /*********************************************************************
  75. *
  76. *       _API_Table
  77. */
  78. const GUI_UC_ENC_APILIST GUI__API_TableNone = {
  79.   _GetCharCode,     /*  return character code as U16 */
  80.   _GetCharSize,     /*  return size of character: 1 */
  81.   _CalcSizeOfChar,  /*  return size of character: 1 */
  82.   _Encode           /*  Encode character */
  83. };
  84. const GUI_UC_ENC_APILIST GUI_UC_None = {
  85.   _GetCharCode,     /*  return character code as U16 */
  86.   _GetCharSize,     /*  return size of character: 1 */
  87.   _CalcSizeOfChar,  /*  return size of character: 1 */
  88.   _Encode           /*  Encode character */
  89. };
复制代码
    6.1.2  另一个要添加的文件主要是用于从外部存储器读取字体点阵数据,并提供为emWin提供相应的接口函数
  1. #include <stddef.h>           /* needed for definition of NULL */
  2. #include "GUI_Private.h"
  3. #include "ff.h"
  4. #include "bsp.h"
  5. #include "MainTask.h"
  6. /* 字模数据的暂存数组,以单个字模的最大字节数为设定值 */
  7. #define BYTES_PER_FONT      1024
  8. static U8 GUI_FontDataBuf[BYTES_PER_FONT];
  9. FIL fsrc;         // 定义文件操作类  
  10. FRESULT res;      // 定义操作结果变量  
  11. UINT bw1;         // 定义读写数量变量
  12. /*---------------------------------------------------------------------------*/
  13. /*字库外部函数部分-----------------------------------------------------------*/
  14. void GUI_X_GetFontData(char* font, U32 oft, U8 *ptr, U16 bytes)
  15. {
  16.     res = f_open(&fsrc, font, FA_OPEN_EXISTING | FA_READ);   //打开字库文件   
  17.     if(res != FR_OK)   
  18.     {   
  19.       
  20.     }   
  21.     res = f_lseek(&fsrc,oft); //找到首地址  
  22.     res = f_read(&fsrc, ptr, bytes, &bw1); //读取字库点阵数据
  23.     res = f_close(&fsrc); //关闭字体  
  24. }
  25. static void GUI_GetDataFromMemory(const GUI_FONT_PROP GUI_UNI_PTR *pProp, U16P c)
  26. {
  27.     U16 BytesPerFont;
  28.     U32 oft;
  29.     char *font = (char *)pProp->paCharInfo->pData;
  30.     /* 每个字模的数据字节数 */
  31.     BytesPerFont = GUI_pContext->pAFont->YSize * pProp->paCharInfo->BytesPerLine;
  32.     if (BytesPerFont > BYTES_PER_FONT)
  33.     {
  34.         BytesPerFont = BYTES_PER_FONT;
  35.     }
  36.     /* 英文字符地址偏移算法 */
  37.     if (c < 0x80)                                                               
  38.     {
  39.         oft = (c-0x20) * BytesPerFont;
  40.     }
  41.     else                                                                           
  42.     {
  43.         /* 用于读取12*12 和 16*16点阵字符 */
  44.         if(font[21] == '1')
  45.         {
  46.             /* 中文字符地址偏移算法包括符号 */
  47.             oft = ((((c >> 8)-0xA1)) + ((c & 0xFF)-0xA1) * 94)* BytesPerFont;
  48.         }
  49.         /* 用于读取24*24 48*48 */
  50.         else
  51.         {
  52.             /* 中文字符地址偏移算法包括符号 */
  53.             oft = ((((c >> 8)-0xA1)) + ((c & 0xFF)-0xB0) * 94)* BytesPerFont;
  54.         }
  55.     }
  56.     GUI_X_GetFontData(font, oft, GUI_FontDataBuf, BytesPerFont);
  57.      
  58. }
  59. void GUIPROP_X_DispChar(U16P c)  
  60. {
  61.     int BytesPerLine;
  62.     GUI_DRAWMODE DrawMode = GUI_pContext->TextMode;
  63.     const GUI_FONT_PROP GUI_UNI_PTR *pProp = GUI_pContext->pAFont->p.pProp;
  64.     //搜索定位字库数据信息  
  65.     for (; pProp; pProp = pProp->pNext)                                          
  66.     {
  67.         if ((c >= pProp->First) && (c <= pProp->Last))break;
  68.     }
  69.     if (pProp)
  70.     {
  71.         GUI_DRAWMODE OldDrawMode;
  72.         const GUI_CHARINFO GUI_UNI_PTR * pCharInfo = pProp->paCharInfo;
  73.         GUI_GetDataFromMemory(pProp, c);//取出字模数据
  74.         BytesPerLine = pCharInfo->BytesPerLine;               
  75.         OldDrawMode  = LCD_SetDrawMode(DrawMode);
  76.         LCD_DrawBitmap(GUI_pContext->DispPosX, GUI_pContext->DispPosY,
  77.                        pCharInfo->XSize, GUI_pContext->pAFont->YSize,
  78.                        GUI_pContext->pAFont->XMag, GUI_pContext->pAFont->YMag,
  79.                        1,     /* Bits per Pixel */
  80.                        BytesPerLine,
  81.                        &GUI_FontDataBuf[0],
  82.                        &LCD_BKCOLORINDEX
  83.                        );
  84.         /* Fill empty pixel lines */
  85.         if (GUI_pContext->pAFont->YDist > GUI_pContext->pAFont->YSize)
  86.         {
  87.             int YMag = GUI_pContext->pAFont->YMag;
  88.             int YDist = GUI_pContext->pAFont->YDist * YMag;
  89.             int YSize = GUI_pContext->pAFont->YSize * YMag;
  90.             if (DrawMode != LCD_DRAWMODE_TRANS)
  91.             {
  92.                 LCD_COLOR OldColor = GUI_GetColor();
  93.                 GUI_SetColor(GUI_GetBkColor());
  94.                 LCD_FillRect(GUI_pContext->DispPosX, GUI_pContext->DispPosY + YSize,
  95.                              GUI_pContext->DispPosX + pCharInfo->XSize,
  96.                              GUI_pContext->DispPosY + YDist);
  97.                 GUI_SetColor(OldColor);
  98.             }
  99.         }
  100.         LCD_SetDrawMode(OldDrawMode); /* Restore draw mode */
  101. //      if (!GUI_MoveRTL)
  102.         GUI_pContext->DispPosX += pCharInfo->XDist * GUI_pContext->pAFont->XMag;
  103.     }
  104. }
  105. /*********************************************************************
  106. *
  107. *       GUIPROP_GetCharDistX
  108. */
  109. int GUIPROP_X_GetCharDistX(U16P c)
  110. {
  111.     const GUI_FONT_PROP GUI_UNI_PTR * pProp = GUI_pContext->pAFont->p.pProp;  
  112.     for (; pProp; pProp = pProp->pNext)                                         
  113.     {
  114.         if ((c >= pProp->First) && (c <= pProp->Last))break;
  115.     }
  116.     return (pProp) ? (pProp->paCharInfo)->XSize * GUI_pContext->pAFont->XMag : 0;
  117. }
复制代码
   6.1.3  比如这里要显示12*12的点阵数据需要提供一个如下内容的文件
  1. #include "GUI.h"
  2. extern void GUIPROP_X_DispChar(U16P c);
  3. extern int GUIPROP_X_GetCharDistX(U16P c);
  4. GUI_CONST_STORAGE GUI_CHARINFO GUI_FontHZ12_CharInfo[2] =  
  5. {     
  6.     {  6,    6,  1, (void *)"0:/system/gui_font/ASC6x12.bin"},      
  7.     {  12,  12,  2, (void *)"0:/system/gui_font/HZ12x12.bin"},         
  8. };
  9. GUI_CONST_STORAGE GUI_FONT_PROP GUI_FontHZ12_PropHZ= {
  10.       0xA1A1,  
  11.       0xFEFE,  
  12.       &GUI_FontHZ12_CharInfo[1],
  13.       (void *)0,  
  14. };
  15. GUI_CONST_STORAGE  GUI_FONT_PROP GUI_FontHZ12_PropASC= {
  16.       0x0000,  
  17.       0x007F,  
  18.       &GUI_FontHZ12_CharInfo[0],
  19.       (void GUI_CONST_STORAGE *)&GUI_FontHZ12_PropHZ,  
  20. };
  21. GUI_CONST_STORAGE  GUI_FONT GUI_FontHZ12 =  
  22. {
  23.       GUI_FONTTYPE_PROP_USER,
  24.       12,  
  25.       12,  
  26.       1,   
  27.       1,   
  28.       (void GUI_CONST_STORAGE *)&GUI_FontHZ12_PropASC
  29. };
  30. GUI_CONST_STORAGE  GUI_FONT GUI_FontHZ12x2 =  
  31. {
  32.     GUI_FONTTYPE_PROP_USER,
  33.       12,  
  34.       12,  
  35.       2,   
  36.       2,   
  37.       (void GUI_CONST_STORAGE *)&GUI_FontHZ12_PropASC
  38. };
复制代码
    6.1.4  还有一个重要的问题就是需要在GUI_Typ.h文件里面添加如下的声明

#define GUI_FONTTYPE_PROP_USER   \
            GUIPROP_X_DispChar,            \
            GUIPROP_X_GetCharDistX,        \
            GUIMONO_GetFontInfo,           \
            GUIMONO_IsInFont,              \
           (GUI_GETCHARINFO *)0,          \
           (tGUI_ENC_APIList*)0            

6. 2  点阵字体的说明      
关于点阵字体,这里有一点需要特别的说明:
12*12点阵汉字和字符  使用的是UCDOS里面的,半角和全角字符显示都正常,汉字也正常
                                      偏移地址计算:oft = ((((c >> 8)-0xA1)) + ((c & 0xFF)-0xA1) * 94)* BytesPerFont;
16*16点阵汉字和字符  使用的是UCDOS里面的,半角和全角字符显示都正常,汉字也正常
                                      偏移地址计算:oft = ((((c >> 8)-0xA1)) + ((c & 0xFF)-0xA1) * 94)* BytesPerFont;
24*24点阵汉字和字符  使用的是UCDOS里面的,半角显示正常,字库里面全角字符,需要单独添加。
                                      偏移地址计算:oft = ((((c >> 8)-0xA1)) + ((c & 0xFF)-0xB0) * 94)* BytesPerFont; 注意和前两个的不同
                                      主要是因为这个里面只有汉字。最重要的是这个字体居然显示的时候是躺在的,而且上下镜像
                                      所以24*24的点阵是用软件《字模3》生成的。

48*48点阵汉字和字符  使用的是UCDOS里面的,半角显示正常,字库里面全角字符,需要单独添加。
                                      偏移地址计算:oft = ((((c >> 8)-0xA1)) + ((c & 0xFF)-0xB0) * 94)* BytesPerFont; 注意和前两个的不同
                                      主要是因为这个里面只有汉字。
提供一下我从网上下载的UCDOS字体
ABC            英文字库文件
ASC12         ASCII字库文件12X6
ASC16         ASCII字库文件16X8
ASC48         ASCII字库文件48X24
Hzk12          汉字库宋体12X12
Hzk16          汉字库宋体16X16
hzk16F         汉字库仿宋16X16
HZK24F        汉字库仿宋24X24
HZK24H        汉字库黑体24X24
HZK24K        汉字库楷体24X24
HZK24S        汉字库宋体24X24
HZK24T        全角字符库24X24
HZK24Z        汉字库篆体24X24
HZK40S        汉字库宋体40X40
HZK40T        全角字符库40X40
HZK48S        汉字库宋体48X48
HZK48S        全角字符库48X48

字库UCDOS.zip (3.26 MB, 下载次数: 2162)


6. 3  将生成的字体移植到armfly - v5开发板上面
    根据上面的说明将其添加到工程中即可,通过截图,实际显示效果如下:
0.PNG



6. 4  实验总结
        实际使用中,从SD卡读取大点阵的数据并显示,显示速度比较的慢,不能满足实际的应用,所以建议大字体存储到内部flash(当然是只生产部分字体)。
还有一个比较郁闷的地方是,以前我用字模提取软件《字模3》非常的好用,字体能够在UCGUI上面正常的显示,现在用emWin,32*32以上的点阵就是无法显示,
下面这个图就是以前用UCGUI时的显示效果,软件《字模3》生成的汉字前面没有全角字符,这点一定要注意,也就是说里面只有汉字。
1.jpg


SD卡根目录要放的文件
system.zip (1.29 MB, 下载次数: 2530)

程序下载
STemWin5.20+uCOS-III+FatFS.zip (15.97 MB, 下载次数: 9415)
回复

使用道具 举报

20

主题

55

回帖

20

积分

初级会员

积分
20
发表于 2013-9-16 21:53:33 | 显示全部楼层
顶起,学习下
天天向上
回复

使用道具 举报

36

主题

2039

回帖

2147

积分

至尊会员

积分
2147
发表于 2013-9-16 21:53:49 | 显示全部楼层
顶起,学习下
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

0

主题

1

回帖

0

积分

新手上路

积分
0
发表于 2013-9-16 21:55:01 | 显示全部楼层
本部分内容设定了隐藏,需要回复后才能看到
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2013-9-16 22:31:29 | 显示全部楼层
顶起................................
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2013-9-16 23:31:11 | 显示全部楼层
学习学习。
不错,赞一个。
回复

使用道具 举报

0

主题

13

回帖

13

积分

新手上路

积分
13
发表于 2013-9-17 07:57:11 | 显示全部楼层
对于国人来说,出汉字,是很实用的技术活。。。支持!
回复

使用道具 举报

9

主题

59

回帖

86

积分

初级会员

积分
86
发表于 2013-9-17 08:24:43 | 显示全部楼层
先留个脚印,希望斑竹能把这资料整理出来,做成PDF档就好了。
回复

使用道具 举报

0

主题

101

回帖

101

积分

初级会员

积分
101
发表于 2013-9-17 08:28:01 | 显示全部楼层
谢谢,学习了
回复

使用道具 举报

0

主题

8

回帖

8

积分

新手上路

积分
8
发表于 2013-9-17 08:55:37 | 显示全部楼层
haohao ,学习先
回复

使用道具 举报

3

主题

48

回帖

3

积分

初级会员

积分
3
发表于 2013-9-17 08:55:39 | 显示全部楼层
学习一下
回复

使用道具 举报

4

主题

39

回帖

130

积分

初级会员

积分
130
发表于 2013-9-17 08:56:40 | 显示全部楼层
顶一个    有用
回复

使用道具 举报

5

主题

519

回帖

534

积分

金牌会员

积分
534
发表于 2013-9-17 08:56:41 | 显示全部楼层
好消息。多谢。。。。。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2013-9-17 09:15:58 | 显示全部楼层
这是一个我很相实现的东西!力顶!
回复

使用道具 举报

0

主题

15

回帖

0

积分

新手上路

积分
0
发表于 2013-9-17 09:32:02 | 显示全部楼层
zhgwork
回复

使用道具 举报

0

主题

8

回帖

0

积分

新手上路

forever

积分
0
发表于 2013-9-17 10:01:45 | 显示全部楼层
[s:151]
回复

使用道具 举报

41

主题

97

回帖

220

积分

高级会员

积分
220
发表于 2013-9-17 10:26:50 | 显示全部楼层
太好了!
回复

使用道具 举报

6

主题

65

回帖

83

积分

初级会员

积分
83
发表于 2013-9-17 11:38:59 | 显示全部楼层
[s:148] 学习
回复

使用道具 举报

5

主题

519

回帖

534

积分

金牌会员

积分
534
发表于 2013-9-17 12:02:36 | 显示全部楼层
版主,看图片,好像控件上也可以放汉字了?
是不是啊?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106692
QQ
 楼主| 发表于 2013-9-17 12:03:19 | 显示全部楼层

回 hqgboy 的帖子

hqgboy:版主,看图片,好像控件上也可以放汉字了?
是不是啊?
 (2013-09-17 12:02) 
是的,控件上面使用是没有问题的。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106692
QQ
 楼主| 发表于 2013-9-17 12:04:05 | 显示全部楼层

回 chenlijian80 的帖子

chenlijian80:先留个脚印,希望斑竹能把这资料整理出来,做成PDF档就好了。 (2013-09-17 08:24) 
会的,现在先做10期,后面会逐渐的都整理成pdf。
回复

使用道具 举报

5

主题

519

回帖

534

积分

金牌会员

积分
534
发表于 2013-9-17 13:02:30 | 显示全部楼层

回 eric2013 的帖子

eric2013:是的,控件上面使用是没有问题的。 (2013-09-17 12:03) 
谢谢版主。
回复

使用道具 举报

5

主题

519

回帖

534

积分

金牌会员

积分
534
发表于 2013-9-17 13:03:10 | 显示全部楼层

回 eric2013 的帖子

eric2013:会的,现在先做10期,后面会逐渐的都整理成pdf。 (2013-09-17 12:04) 
好事情。。。。
以前因为不支持中文,没法用。
现在打算用到LPC1788上。刷屏那个爽。
回复

使用道具 举报

2

主题

35

回帖

2

积分

新手上路

积分
2
发表于 2013-9-17 17:47:30 | 显示全部楼层
学学,最近也在学这个。
回复

使用道具 举报

91

主题

289

回帖

562

积分

金牌会员

积分
562
发表于 2013-9-17 20:41:34 | 显示全部楼层
学习学习。。。。。
还有就是第三期在哪呢
回复

使用道具 举报

116

主题

799

回帖

1147

积分

至尊会员

积分
1147
QQ
发表于 2013-9-18 08:18:31 | 显示全部楼层
[s:152]  [s:152]  [s:152]  [s:152]  [s:151]  [s:151]
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106692
QQ
 楼主| 发表于 2013-9-18 09:25:56 | 显示全部楼层
feiante:
学习学习。。。。。
还有就是第三期在哪呢

应该找到第三期了吧,以后可以直接的点击这里就可以的
1.png
回复

使用道具 举报

5

主题

519

回帖

534

积分

金牌会员

积分
534
发表于 2013-9-18 09:46:20 | 显示全部楼层
[s:141]
回复

使用道具 举报

0

主题

1

回帖

0

积分

新手上路

积分
0
发表于 2013-9-18 11:07:35 | 显示全部楼层
找了好久,终于找到了
回复

使用道具 举报

0

主题

8

回帖

0

积分

新手上路

forever

积分
0
发表于 2013-9-18 11:32:01 | 显示全部楼层
楼主,昨天在LPC1788上移植了,我用的是LPC1788的emwin库(5.20),在测试汉字显示的时候,用GUI_DisplayString等函数可以实现汉字显示,但是把控件上用汉字就显示出不对劲。例如在标题框上显示“系统设置”,结果人家显示出来“绯荤璁距疆”这些玩意。我在另一块板子上用字库芯片GL2312却能够正常显示。求楼主正解啊!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106692
QQ
 楼主| 发表于 2013-9-18 12:29:37 | 显示全部楼层
forevertoo:
楼主,昨天在LPC1788上移植了,我用的是LPC1788的emwin库(5.20),在测试汉字显示的时候,用GUI_DisplayString等函数可以实现汉字显示,但是把控件上用汉字就显示出不对劲。例如在标题框上显示“系统设置”,结果人家显示出来“绯荤璁距疆”这些玩意。我在另一块板子上用字库芯片GL2312却能够正常显示。求楼主正解啊!

用的是我提供的的字体库么,出现汉字了说明读取是正确的,显示的不是你想要的,估计问题是出在不能正确的解析文字的位置。
2.png
回复

使用道具 举报

5

主题

519

回帖

534

积分

金牌会员

积分
534
发表于 2013-9-18 13:35:27 | 显示全部楼层
楼主,没有32*32的汉字?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106692
QQ
 楼主| 发表于 2013-9-18 13:37:03 | 显示全部楼层

回 hqgboy 的帖子

hqgboy:楼主,没有32*32的汉字? (2013-09-18 13:35) 
需要自己制作。UCDOS里没有找到,只在网上找到了那么几种
回复

使用道具 举报

0

主题

10

回帖

0

积分

新手上路

积分
0
发表于 2013-9-18 16:34:29 | 显示全部楼层
[s:151]
回复

使用道具 举报

0

主题

8

回帖

8

积分

新手上路

积分
8
发表于 2013-9-18 16:42:03 | 显示全部楼层
正在研究emwin的汉字显示,感觉用EncodeUTF8很麻烦,向楼主学习
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106692
QQ
 楼主| 发表于 2013-9-21 13:28:25 | 显示全部楼层

回 zhl_tc 的帖子

zhl_tc:正在研究emwin的汉字显示,感觉用EncodeUTF8很麻烦,向楼主学习
 (2013-09-18 16:42) 
不麻烦,我觉得还是很不错的。
回复

使用道具 举报

1

主题

15

回帖

18

积分

新手上路

积分
18
发表于 2013-9-22 14:29:54 | 显示全部楼层
[s:151] [s:151]
回复

使用道具 举报

11

主题

34

回帖

67

积分

初级会员

积分
67
发表于 2013-9-22 15:55:33 | 显示全部楼层
[s:140]
回复

使用道具 举报

5

主题

519

回帖

534

积分

金牌会员

积分
534
发表于 2013-9-24 08:56:37 | 显示全部楼层
[s:151] [s:151] [s:151]
回复

使用道具 举报

0

主题

4

回帖

0

积分

新手上路

积分
0
发表于 2013-9-26 10:14:11 | 显示全部楼层
[s:151]  [s:150]  [s:149]  [s:141]
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-30 05:36 , Processed in 0.388478 second(s), 34 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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