Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
DIY综合交流区
【RealTouch应用开发教程】第八讲、rtgui字库的使用
发布于 2012-11-27 00:21:04 浏览:9323
订阅该版
【RealTouch应用开发教程】第八讲、rtgui字库的使用。本讲主要介绍如何在RTGUI中使用汉字字库,以及如何制作自己需要的汉字字库文件。详细讲解在RTGUI中使用字库碰到的各种问题和解决方法,帮助读者能够快速的掌握如何在RTGUI中使用自定义字库。 下载附件 [【RealTouch应用开发教程】第八讲、rtgui字库的使用.rar](https://oss-club.rt-thread.org/uploads/4345_03e0ed1ffa6e1c368a50957d25d8334c.rar) ![fontdemo.jpg](https://oss-club.rt-thread.org/uploads/3230_0c72329b48ee7fa289c9a6c511cd905d.jpg)
查看更多
6
个回答
默认排序
按发布时间排序
prife
2012-11-27
这家伙很懒,什么也没写!
发一个山寨版本,直接使用rtgui,不需要realtouch硬件亦可以工作。 ``` #include
#include
#include
#include
#include
#include
#include
#include
#include
/* 在LCD上创建一个主窗口,这是第一个窗口 */ #define MIN(x,y) ((x) > (y) ? (y) : (x)) struct rtgui_hz_file_font hz24= { {RT_NULL}, /* cache root */ 0, /* cache size */ 24, /* font size */ (24*24/8), /* font data size */ -1, /* fd */ "/hz24.fnt" /* font_fn */ }; struct rtgui_font rtgui_font_hz24 = { "hz", /* family */ 24, /* height */ 1, /* refer count */ &rtgui_hz_file_font_engine,/* font engine */ (void *) &hz24, /* font private data */ }; static int dc_draw(struct rtgui_widget *object) { struct rtgui_rect rect, size; struct rtgui_dc * dc; rtgui_graphic_driver_get_rect(rtgui_graphic_driver_get_default(), &rect); dc = rtgui_dc_begin_drawing(object); /* draw English word */ RTGUI_DC_FC(dc) = RTGUI_RGB(0xFF, 0, 0); size.x1 = rect.x2/4; size.y1 = rect.y2/4; size.x2 = rect.x2; size.y2 = rect.y2/2; rtgui_dc_draw_text(dc, "hello, world", &size); /* draw Chinese word */ RTGUI_DC_FC(dc) = RTGUI_RGB(0, 0, 0xFF); RTGUI_WIDGET_FONT(object) = rtgui_font_refer("hz", 24); size.x1 = rect.x2/4; size.y1 = rect.y2/2; size.x2 = rect.x2; size.y2 = rect.y2/4 * 3; rtgui_dc_draw_text(dc, "我是中国人, I am Chinese.", &size); rtgui_dc_end_drawing(dc); return 0; } static rt_bool_t event_handle(struct rtgui_object * object,struct rtgui_event * event) { switch(event->type) { case RTGUI_EVENT_PAINT: rt_kprintf("RTGUI_EVENT_PAINT "); rtgui_win_event_handler((struct rtgui_object*)object, event); dc_draw(object); return 0; default: rt_kprintf("other type <%d> ", object->type); } return rtgui_win_event_handler(object,event); } static void win_thread_entry(void* parameter) { struct rtgui_app* app; struct rtgui_win *win; struct rtgui_rect rect; app = rtgui_app_create(rt_thread_self(), "MyApp"); RT_ASSERT(app != RT_NULL); /* create a full screen window */ rtgui_graphic_driver_get_rect(rtgui_graphic_driver_get_default(), &rect); win = rtgui_win_create(RT_NULL, "MainWin", &rect, RTGUI_WIN_STYLE_NO_BORDER | RTGUI_WIN_STYLE_NO_TITLE); if (win == RT_NULL) { rtgui_app_destroy(app); return; } /* 加载外部字体 */ rtgui_font_system_add_font(&rtgui_font_hz24); /* 绑定消息处理函数 */ rtgui_object_set_event_handler(RTGUI_OBJECT(win), event_handle); /* 显示主窗口 */ rtgui_win_show(win, RT_FALSE); /* 循环 */ rtgui_app_run(app); _err: rtgui_win_destroy(win); rtgui_app_destroy(app); rt_kprintf("MyApp Quit. "); } int gui5() { rt_thread_t tid; tid = rt_thread_create("win", win_thread_entry, RT_NULL, 2048, 20, 20); if (tid != RT_NULL) { rt_thread_startup(tid); } return 0; } #include
FINSH_FUNCTION_EXPORT(gui5, gui run) ``` 在simulator测试效果如下所示
咖啡恋
2012-11-27
这家伙很懒,什么也没写!
我按照Prife的GUI“Hello World”程序添加到我的系统中,屏上显示不了Hello World。 硬件板子是我自己的板子,用的是STM32F417芯片,屏驱动也已经完成(可以通过finsh shell直接画线,在屏显示线和改变线的颜色)。处理驱动这块,我的GUI不能跑起来,还可有有哪些原因呢?
郁海难填
2013-01-20
这家伙很懒,什么也没写!
压缩包里没有产生ascii字库的txt。我发现自己弄了一个ascii的txt,会导致这个字模程序出问题。
nongxiaoming
2013-02-03
rt-thread大师兄
>压缩包里没有产生ascii字库的txt。我发现自己弄了一个ascii的txt,会导致这个字模程序出问题。 --- 应该是你的ASCII码取模不对,参考系统的ASCII字符,扩展的ASCII是有256个的,如果你使用的是标准的128(不含扩展集),需要在注册字库时设置,同时注意一下,ASCII字符集的前面32个基本是转义字符来的,比如换行符等,经常取模都不包含这32个,所以你需要设置一下起始为32,最后一个为127,这样才会正常。
haitao52198
2013-10-11
这家伙很懒,什么也没写!
用字库需要特别注意的就是文件系统的初始化和挂载一定要在GUI的初始化之前完成,否则GUI调用字库时会有问题
撰写答案
登录
注册新账号
关注者
0
被浏览
9.3k
关于作者
nongxiaoming
rt-thread大师兄
提问
23
回答
402
被采纳
11
关注TA
发私信
相关问题
1
[项目]搞个开源的硬件项目
2
硬件计划贴,及时更新,欢迎提意见
3
软件计划贴,及时更新,欢迎提意见::WMA,MOUNT,LWIP等问题急需解决.
4
MMS协议
5
定点的wma解压库-libwma
6
QQ群记录 [20090821]
7
STM32网络收音机PCB报名征集
8
第一版调试记录
9
第二版硬件讨论
10
RADIO项目相关模块规格--欢迎大家自己做板时规格与此兼容,减少重复劳动
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
rt-thread 小内存算法源码分析
2
env中添加lvgl软件包后,keil编译包--c99错误
3
【NXP-MCXA153】 定时器驱动移植
4
GD32F450 看门狗驱动适配
5
【NXP-MCXA153】看门狗驱动移植
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
7
个答案
2
次被采纳
a1012112796
18
个答案
1
次被采纳
红枫
5
个答案
1
次被采纳
Ryan_CW
5
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
11
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部