搜索
bottom↓
回复: 8

请教:RT-GUI中如何支持汉字呢,需要定义那些常量,需要那几个文件。比如label控件的标题

[复制链接]

出0入0汤圆

发表于 2010-2-24 15:54:20 | 显示全部楼层 |阅读模式
请教:RT-GUI中如何支持汉字呢,需要定义那些常量,需要那几个文件。比如label控件的标题是汉字?

如果测试的话,最后肯定涉及到汉字的显示!
我现在使用的是radio项目中的rtconfig.h文件。
已经含有:
#define RTGUI_USING_HZ_FILE
#define RTGUI_DEFAULT_FONT_SIZE  16

工程中已经包含了以下几个与文字相关的文件:
asc12font.c
asc16font.c
font_hz_file.c
hz16font.c
hz12font.c
arial12font.c
arial16font.c

现在label控件的汉子显示是乱码!

谢谢各位!

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2010-2-24 16:03:09 | 显示全部楼层
#define RTGUI_USING_HZ_FILE
这个定义会让RT-Thread/GUI使用点阵汉字文件

如果定义
#define RTGUI_USING_HZ_BMP
会使用点阵汉字的数组,占用ROM会比较大。

相配套的文档会尽快出来,写文档需要时间。。。

出0入0汤圆

 楼主| 发表于 2010-2-24 19:45:54 | 显示全部楼层
谢谢ffxx,但是rtconfig.h之中,我已经定义了#define RTGUI_USING_HZ_FILE

控件显示的汉字还是乱码?是不是还有其它的要求呢?

出0入0汤圆

发表于 2010-2-24 22:07:36 | 显示全部楼层
回复【2楼】neilxiang  
谢谢ffxx,但是rtconfig.h之中,我已经定义了#define RTGUI_USING_HZ_FILE
控件显示的汉字还是乱码?是不是还有其它的要求呢?
-----------------------------------------------------------------------

回复【1楼】ffxz  
#define RTGUI_USING_HZ_FILE
这个定义会让RT-Thread/GUI使用点阵汉字文件
-----------------------------------------------------------------------

上面的回复已经说明了,如果定义RTGUI_USING_HZ_FILE,那么使用点阵汉字文件。

点阵汉字文件必须放在/resource目录下,然后RT-Thread/GUI会自动去读取并实现一定的汉字信息缓存以加速下一次的汉字显示

出0入0汤圆

 楼主| 发表于 2010-2-25 13:12:23 | 显示全部楼层
/resource 我是拷贝raido项目中的,但是现在显示还是乱码?
我用VS2005测试代码运行正常,所以可能还是有别的要求,烦请ffxx指点!谢谢!

出0入0汤圆

发表于 2010-2-25 13:22:03 | 显示全部楼层
说说你的具体环境、具体配置吧

出0入0汤圆

 楼主| 发表于 2010-2-25 15:16:03 | 显示全部楼层
具体配置是这样的:

/* RT-Thread config file */
#ifndef __RTTHREAD_CFG_H__
#define __RTTHREAD_CFG_H__

/* RT_NAME_MAX*/
#define RT_NAME_MAX        8

/* RT_ALIGN_SIZE*/
#define RT_ALIGN_SIZE        4

/* PRIORITY_MAX*/
#define RT_THREAD_PRIORITY_MAX        32

/* Tick per Second*/
#define RT_TICK_PER_SECOND        100

/* SECTION: RT_DEBUG */
/* Thread Debug*/
#define RT_DEBUG
/* #define RT_THREAD_DEBUG */

#define RT_USING_OVERFLOW_CHECK

/* Using Hook*/
#define RT_USING_HOOK

/* SECTION: IPC */
/* Using Semaphore*/
#define RT_USING_SEMAPHORE

/* Using Mutex*/
#define RT_USING_MUTEX

/* Using Event*/
#define RT_USING_EVENT

/* Using MailBox*/
#define RT_USING_MAILBOX

/* Using Message Queue*/
#define RT_USING_MESSAGEQUEUE

/* SECTION: Memory Management */
/* Using Memory Pool Management*/
#define RT_USING_MEMPOOL

/* Using Dynamic Heap Management*/
#define RT_USING_HEAP

/* Using Small MM*/
#define RT_USING_SMALL_MEM

/* Using SLAB Allocator*/
/* #define RT_USING_SLAB */

/* SECTION: Device System */
/* Using Device System*/
#define RT_USING_DEVICE
#define RT_USING_UART1
// #define RT_USING_UART2
// #define RT_USING_UART3

/* SECTION: Console options */
/* the buffer size of console*/
#define RT_CONSOLEBUF_SIZE        128

/* SECTION: FinSH shell options */
/* Using FinSH as Shell*/
#define RT_USING_FINSH
/* Using symbol table */
#define FINSH_USING_SYMTAB
#define FINSH_USING_DESCRIPTION
#define FINSH_DEVICE_NAME   "uart1"

/* SECTION: C++ support */
/* Using C++ support*/
/* #define RT_USING_CPLUSPLUS */

#define RT_USING_DFS
//#define RT_USING_DFS_EFSL

/* byte alignment for EFSL */
#define BYTE_ALIGNMENT

#define RT_USING_DFS_ELMFAT
#define RT_DFS_ELM_WORD_ACCESS

/* SECTION: DFS options */
/* the max number of mounted filesystem */
#define DFS_FILESYSTEMS_MAX                        2
/* the max number of opened files                 */
#define DFS_FD_MAX                                          64
/* the max number of cached sector                 */
#define DFS_CACHE_MAX_NUM                     4

/* SECTION: lwip, a lighwight TCP/IP protocol stack */
/* Using lighweight TCP/IP protocol stack */
#define RT_USING_LWIP

/* Trace LwIP protocol */
/* #define RT_LWIP_DEBUG */

/* LwIP uses RT-Thread Memory Management */
#define RT_LWIP_USING_RT_MEM

/* Enable ICMP protocol */
#define RT_LWIP_ICMP

/* Enable IGMP protocol */
/* #define RT_LWIP_IGMP */

/* Enable UDP protocol */
#define RT_LWIP_UDP

/* Enable TCP protocol */
#define RT_LWIP_TCP

/* the number of simulatenously active TCP connections */
#define RT_LWIP_TCP_PCB_NUM        100

/* TCP sender buffer space */
#define RT_LWIP_TCP_SND_BUF        2048

/* Enable SNMP protocol */
/* #define RT_LWIP_SNMP */

/* Using DHCP */
//#define RT_LWIP_DHCP

/* Using DNS */
//#define RT_LWIP_DNS  //xiang

/* ip address of target */
#define RT_LWIP_IPADDR0        192
#define RT_LWIP_IPADDR1        168
#define RT_LWIP_IPADDR2        1
#define RT_LWIP_IPADDR3        130

/* gateway address of target */
#define RT_LWIP_GWADDR0        192
#define RT_LWIP_GWADDR1        168
#define RT_LWIP_GWADDR2        1
#define RT_LWIP_GWADDR3        1

/* mask address of target */
#define RT_LWIP_MSKADDR0        255
#define RT_LWIP_MSKADDR1        255
#define RT_LWIP_MSKADDR2        255
#define RT_LWIP_MSKADDR3        0

/* tcp thread options */
#define RT_LWIP_TCPTHREAD_PRIORITY                10
#define RT_LWIP_TCPTHREAD_MBOX_SIZE                4
#define RT_LWIP_TCPTHREAD_STACKSIZE                1024

/* ethernet if thread options */
#define RT_LWIP_ETHTHREAD_PRIORITY                12
#define RT_LWIP_ETHTHREAD_MBOX_SIZE                4
#define RT_LWIP_ETHTHREAD_STACKSIZE                512

/* SECTION: RT-Thread/GUI */
#define RT_USING_RTGUI

/* name length of RTGUI object */
#define RTGUI_NAME_MAX                12
/* support 16 weight font */
#define RTGUI_USING_FONT16
/* support Chinese font */
#define RTGUI_USING_FONTHZ
/* use DFS as file interface */
#define RTGUI_USING_DFS_FILERW
/* use font file as Chinese font */
#define RTGUI_USING_HZ_FILE
/* use small size in RTGUI */
#define RTGUI_USING_SMALL_SIZE
/* use mouse cursor */
/* #define RTGUI_USING_MOUSE_CURSOR */
/* default font size in RTGUI */
#define RTGUI_DEFAULT_FONT_SIZE        16

#endif

开发环境是KEL3.5.
开发板是英蓓特公司的STM32103ZE
配置了320*240的屏,驱动器是ILI9325

现在经过测试,控件的绘制正确了。但是显示中文汉字的时候,是乱码.

附加问一下:如果是乱码,是不是LCD.C中绘点函数有问题呢,我觉得这个可能性很小,毕竟英文字符的显示是正确的。


////////////////////////////////////////////////////////////////////////
上面的回复已经说明了,如果定义RTGUI_USING_HZ_FILE,那么使用点阵汉字文件。

点阵汉字文件必须放在/resource目录下,然后RT-Thread/GUI会自动去读取并实现一定的汉字信息缓存以加速下一次的汉字显示
//////////////////////////////////////////////////////////////////////

是将文件放在计算机中的resource之下呢,还是SD卡中呢?

出0入0汤圆

 楼主| 发表于 2010-2-25 15:22:37 | 显示全部楼层
谢谢ffxx,文件应该是放在SD卡之中,现在又碰到一个新的头题,还要麻烦你。
是关于textbox控件使用的问题,我在VS2005中,测试测码,textbox控件的显示是正确的,
但是在下位机的时候,textbox中是示的东西是空的。

textbox=rtgui_textbox_create("textbox");
RTGUI_WIDGET_FOREGROUND(RTGUI_WIDGET(textbox))=red;
rtgui_container_add_child(RTGUI_CONTAINER(main_view),RTGUI_WIDGET(textbox));
rtgui_widget_set_rect(RTGUI_WIDGET(textbox),&rect);

textbox的边框显示出来了,但是没有显示文字!
其它的控件标题显示是正确的,汉字显示也对了。
main_view是创建的一个视图,在其上显示所有的控件。

出0入0汤圆

发表于 2010-7-23 14:37:40 | 显示全部楼层
回去也试试看。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 14:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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