Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
RTGUI重绘理解
发布于 2012-01-15 19:40:01 浏览:2794
订阅该版
上个星期熊大说理论上RTGUI的重绘绘成什么都可以,我一直在疑惑为什么。 直到刚才,我对代码层层定义看下去, 发现在rt-thread的\components tgui\common文件夹下有个theme.c源码,我才发现按键是什么实现重绘的。 其实一直纠结我的问题有三个: 1。设备怎么初始化,怎么控制?这个昨天解决了,初始化是调用device_init_all函数,控制需要自己编写control函数。 2.RTGUI绘图的事件响应是如何实现的,刚才看代码发现的,实际上,比如按键,是将自己加入了RTGUI事件列表中,而主workbench控制事件传递,这个事件不符合,就查询是否是另一个事件,如此的递推来实现的; 3.怎么实现重绘,这个问题的原因是因为我并没有发现按键重绘的实现,直到刚才发现了rtgui_theme_draw_button这个函数才知道为什么RTGUI按键可以实现多态重绘,但是并不是依赖控制线程的,按照我的理解,按键风格其实都是同有定死的,能实现多状态重绘是因为按键本身有状态标志,可以根据这个画不同的图,但是需要注意的是。rt_theme.c这个虽然放在了组件里面默认使用,但是是放在common里面的,也就是说它只是个应用画图函数,并不是组件里面的组成部分,而是应用部分,也就是说,如果我想改变按键风格,比如换成图片,都只需要修改对应函数,或者自己再建立一个文件,包含相同的函数头,然后函数名不变,自己增加函数内容即可实现自己的绘图。 熊大,这样对吧。
查看更多
4
个回答
默认排序
按发布时间排序
xiao苦
2012-01-15
这家伙很懒,什么也没写!
甚至可以说。大部分common文件都可以根据自己需要改的,只要修改合理跟RTGUI稳定性是没有多大关系的,这样说对吗?
bernard
2012-01-15
这家伙很懒,什么也没写!
[s:158] 并不是这样的。 rtgui_theme.c是整个RTGUI的绘图主题风格,以前是一直打算针对内存多的系统出一套png贴图方式的主题,只是没时间做。有了这个png贴图主题,界面的好看程度会直线上升。 我说的重载绘图指的是这个: 每一类控件都有一个事件处理函数,用于处理GUI方面的消息(甚至是一些额外的命令消息),例如button的事件处理函数是:rtgui_button_event_handler。 那么对于一个button对象,在创建成功后就可以重置其事件处理函数: ``` rtgui_button_t *button; /* 假设是button对象,后面的创建过程就直接略掉了 */ /* 重置事件处理函数 */ rtgui_widget_set_event_handler(RTGUI_WIDGET(button), my_handler); /* 因为button是派生自widget,所以一切rtgui_widget*函数都可以应用于 button */ /* my_handler 的定义如下 */ rt_bool_t my_handler(struct rtgui_widget* widget, struct rtgui_event* event) { if (event == RTGUI_EVENT_PAINT) /* 重绘控件,仅需要关心RTGUI_EVENT_PAINT事件即可 */ { /* 采用你自己的绘图方式进行绘图 */ } else rtgui_widget_set_event_handler(widget, event); /* 不是关心的绘图事件,使用button原始的事件处理函数进行处理 */ } ```
xiao苦
2012-01-15
这家伙很懒,什么也没写!
[s:169] 谢谢熊大。。 这个太重要了,解决了我目前很多顾虑了。 也就是说不管什么时候组件,其实都是widget派生出来的,所以基础函数都使用,因此可以自己重定向事件控制函数实现自己的功能而不是局限于事先预定好的,所以才可以实现自定义重绘而不去动用任何库文件。 再次表示感谢。
撰写答案
登录
注册新账号
关注者
0
被浏览
2.8k
关于作者
xiao苦
这家伙很懒,什么也没写!
提问
57
回答
244
被采纳
0
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
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
基于STM32H750和Rt-Thread的CANFD通信实现的记录(一)
2
freemodbus主机在freertos的适配,参考rtthread例程
3
开源共生 商业共赢 | RT-Thread 2024开发者大会议程正式发布!
4
【24嵌入式设计大赛】基于RT-Thread星火一号的智慧家居系统
5
RT-Thread EtherKit开源以太网硬件正式发布
热门标签
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
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
SFUD
msh
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1443
个答案
289
次被采纳
张世争
805
个答案
174
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
4
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部