Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
如何重绘?
发布于 2010-08-17 09:19:10 浏览:16216
订阅该版
问题1)view 上有一个checkbox,我勾选它的时候,设置它的背景色为红色。然后想重绘它。其他控件不变。这个如何实现它自己的重绘事件呢? 问题2)window上有一个box,box包含很多label,textbox控件。我单击view上的按钮改变box的rect.y1,rect.y2坐标。然后我想让box自己重绘,实现所有控件的位置重新排列,这个可以办到吗?
查看更多
34
个回答
默认排序
按发布时间排序
bernard
2010-08-17
这家伙很懒,什么也没写!
rtgui_widget_update
Gavin_Li
2010-08-18
这家伙很懒,什么也没写!
>rtgui_widget_update --- 我昨晚试了一下,是可以用rtgui_widget_update实现重绘。但是现在又碰到一个问题。 我重绘的是window控件。为什么超过window定义的区域也可以见到呢。 比如window定义为(0,50)~(240,100). 有一个checkbox控件定义为(0,100)~(100,120)。 第一次创建window,并把它加上去,这个checkbox是不可见的。但是第二次用 rtgui_widget_update重绘这个window的时候,它又可见了。
bernard
2010-08-18
这家伙很懒,什么也没写!
给个测试代码过来看看
Gavin_Li
2010-08-18
这家伙很懒,什么也没写!
那得晚上了。我现在没拷来公司。不知道是什么原因。 我这边不允许乱安装开发软件。所以白天没法试。sorry lar.
Gavin_Li
2010-08-18
这家伙很懒,什么也没写!
``` #include "demo_view.h" #include
#include
#include
#include
#include
static rtgui_view_t *view1; static rtgui_checkbox_t* checkbox1; static rtgui_win_t *win1; static rtgui_rect_t rect; /* 改变window中的checkbox位置并重绘window */ static void change_checkbox_position(struct rtgui_widget* widget, struct rtgui_event* event) { rect.y1 +=10; rect.y2 +=10; rtgui_widget_set_rect(RTGUI_WIDGET(checkbox1), &rect); rtgui_widget_update(RTGUI_WIDGET(win1)); } /*创建非模态window*/ void create_new_window(rtgui_widget_t *widget) { rtgui_toplevel_t *parent; rtgui_label_t* label; rtgui_rect_t rect_size = {0, 100, 200, 120}; parent = RTGUI_TOPLEVEL(rtgui_widget_get_toplevel(widget)); /* 创建一个窗口,风格为无标题及无边框 */ win1 = rtgui_win_create(parent, "Table", &rect_size, RTGUI_WIN_STYLE_NO_TITLE); rtgui_rect_moveto(&rect_size, 0, 45); rtgui_win_set_rect(win1,&rect_size); label = rtgui_label_create("这是非模态窗口"); /* 设置label的位置 */ rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect_size); /* view是一个container控件,调用add_child方法添加这个label控件 */ rtgui_container_add_child(RTGUI_CONTAINER(win1), RTGUI_WIDGET(label)); rect.x1=0; rect.y1=100; rect.x2=100; rect.y2=120; /* 创建一个checkbox控件 */ checkbox1 = rtgui_checkbox_create("test",RT_FALSE); /* 设置label的位置 */ rtgui_widget_set_rect(RTGUI_WIDGET(checkbox1), &rect); /* view是一个container控件,调用add_child方法添加这个label控件 */ rtgui_container_add_child(RTGUI_CONTAINER(win1), RTGUI_WIDGET(checkbox1)); /* 非模态显示窗口 */ rtgui_win_show(win1, RT_FALSE); } rtgui_view_t *wind_test(rtgui_workbench_t* workbench) { rtgui_button_t *button; rtgui_rect_t widget_rect; view1 = demo_view(workbench, "test"); demo_view_get_rect(view1, &widget_rect); widget_rect.x1 += 5; widget_rect.x2 = widget_rect.x1 + 100; widget_rect.y1 += 5; widget_rect.y2 = widget_rect.y1 + 20; button = rtgui_button_create("上移"); rtgui_widget_set_rect(RTGUI_WIDGET(button), &widget_rect); rtgui_container_add_child(RTGUI_CONTAINER(view1), RTGUI_WIDGET(button)); rtgui_button_set_onbutton(button, change_checkbox_position); return view1; } ``` 在demo_workbench.c中添加该view demo_view_dc(workbench); wind_test(workbench); -----下面的view都屏避掉 在demo_view.c中修改demo_view_next函数 void demo_view_next(struct rtgui_widget* widget, rtgui_event_t *event) { if (demo_view_current + 1< demo_view_number) { demo_view_current ++; rtgui_view_show(demo_view_list[demo_view_current], RT_FALSE); if ( demo_view_current==1)//这里加上显示非模态窗口的函数 { create_new_window(RTGUI_WIDGET(demo_view_list[demo_view_current])); } } } 这样运行就看到checkbox可以脱离window显示。
Gavin_Li
2010-08-19
这家伙很懒,什么也没写!
第一次界面show出来的时候,checkbox是无法显示的。单击“上移"按钮后,就可以显示了。 版主知道哪里出问题了吗?
bernard
2010-08-19
这家伙很懒,什么也没写!
抱歉,忙呀。今天会导入测试代码测试下,如果有问题会给出修复方法。
bernard
2010-08-19
这家伙很懒,什么也没写!
是的,确实有问题。动态设置控件的时候,没做相应的剪切域更新,补丁已经进svn了。
Gavin_Li
2010-08-20
这家伙很懒,什么也没写!
能告诉我修改了哪些文件吗。我不想再重新更新整个系统文件。
bernard
2010-08-20
这家伙很懒,什么也没写!
是widget.c 不过完整的更新下来也还好吧
撰写答案
登录
注册新账号
关注者
0
被浏览
16.2k
关于作者
Gavin_Li
这家伙很懒,什么也没写!
提问
28
回答
74
被采纳
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
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
6
五分钟玩转RT-Thread新社区
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
art-pi2 上手记录(二)
2
VScode + EIDE + STM32cubeMX RT-Thread nano 移植教程MDK版+GCC版
3
基于RT-Thread的STM32F4开发第九讲——硬件看门狗(IWDG)
4
STM32内存扩展,SRAM-RMC
5
基于RT-Thread的STM32F4开发第八讲——SPI(普通、DMA、SFUD)
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
Bootloader
AT
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
FAL
RTC
rt-smart
I2C_IIC
UART
cubemx
ESP8266
ota在线升级
WIZnet_W5500
BSP
PWM
packages_软件包
flash
freemodbus
潘多拉开发板_Pandora
GD32
ADC
keil_MDK
定时器
flashDB
编译报错
ulog
socket
rt_mq_消息队列_msg_queue
msh
中断
Debug
SFUD
C++_cpp
at_device
本月问答贡献
出出啊
1524
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
821
个答案
179
次被采纳
crystal266
555
个答案
162
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
1
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部