Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
[请教]使用image做为button出错的问题?
发布于 2013-03-10 16:15:47 浏览:4125
订阅该版
``` void app2_entry(void* parameter) { struct rtgui_app* application; struct rtgui_win* win; struct rtgui_button *button1,*button2,*button3; struct rtgui_rect rect; /* rtgui_radiobox_t *radiobox; /* 用于显示垂直方向的radio文本项数组 */ /* static char *radio_item_v[5] = { "one", "two", "three", "item 1", "item 2" };*/ rtgui_image_t *img; application = rtgui_app_create("ExApp2"); if (application != RT_NULL) { rtgui_rect_t rect = {50, 50, 300, 230}; win = rtgui_win_create(RT_NULL, "Window #2", &rect, RTGUI_WIN_STYLE_DEFAULT | RTGUI_WIN_STYLE_DESTROY_ON_CLOSE); button1 = rtgui_button_create("key1"); button2 = rtgui_button_create("key2"); button3 = rtgui_button_create("key3"); img = rtgui_image_create("/aa/btndemo.bmp",RT_TRUE); rect.x1 = 52;rect.y1=150; rect.x2 = 117;rect.y2 = 220; RTGUI_WIDGET_FOREGROUND(RTGUI_WIDGET(button1)) = black; RTGUI_WIDGET_BACKGROUND(RTGUI_WIDGET(button1)) = light_grey; rtgui_widget_set_rect(RTGUI_WIDGET(button1),&rect); rtgui_button_set_onbutton(button1,button1_deal); rect.x1 = 118;rect.y1=200; rect.x2 = 120;rect.y2 = 220; RTGUI_WIDGET_FOREGROUND(RTGUI_WIDGET(button2)) = black; RTGUI_WIDGET_BACKGROUND(RTGUI_WIDGET(button2)) = white; rtgui_widget_set_rect(RTGUI_WIDGET(button2),&rect); rtgui_button_set_unpressed_image(button1,img); rect.x1 = 128;rect.y1=200; rect.x2 = 148;rect.y2 = 220; RTGUI_WIDGET_FOREGROUND(button3) = white; RTGUI_WIDGET_BACKGROUND(button3) = blue; rtgui_widget_set_rect(RTGUI_WIDGET(button3),&rect); /* 创建一个垂直方向显示的radiobox控件,文本项是radio_item_v数组,共5个项 */ // radiobox = rtgui_radiobox_create("Radio Box", RTGUI_VERTICAL, radio_item_v, 5); /* 设置当前选择的数组是第0项 */ /* rtgui_radiobox_set_selection(radiobox, 0); rect.x1 = 50;rect.y1=80; rect.x2 = 200;rect.y2 = 220; RTGUI_WIDGET_FOREGROUND(button3) = white; RTGUI_WIDGET_BACKGROUND(button3) = blue; rtgui_widget_set_rect(RTGUI_WIDGET(radiobox),&rect);*/ /* 添加radiobox控件到视图中 */ // rtgui_container_add_child(RTGUI_CONTAINER(win), RTGUI_WIDGET(radiobox)); rtgui_container_add_child(RTGUI_CONTAINER(win),RTGUI_WIDGET(button1)); rtgui_container_add_child(RTGUI_CONTAINER(win),RTGUI_WIDGET(button2)); rtgui_container_add_child(RTGUI_CONTAINER(win),RTGUI_WIDGET(button3)); rtgui_win_show(win, RT_TRUE); // rtgui_app_run(application); rtgui_app_destroy(application); } } void app_init(void) { rt_thread_t tid; tid = rt_thread_create("app1", app1_entry, RT_NULL, 2048, 20, 20); if (tid != RT_NULL) rt_thread_startup(tid); tid = rt_thread_create("app2", app2_entry, RT_NULL, 7*1024, 26, 20); if (tid != RT_NULL) rt_thread_startup(tid); } ``` img = rtgui_image_create("/aa/btndemo.bmp",RT_TRUE);使用时出错 打印信息 ```RTGUI: create server: 20006430finsh>>BMP err: no mem ((((rt_uint32_t)rmem) & (RT_ALIGN_SIZE-1)) == 0) assert failed at rt_free:502 ``` 请问什么问题? ![1jpg.jpg](https://oss-club.rt-thread.org/uploads/3230_32959660e4a2359dadadea1ba207d38f.jpg)
查看更多
13
个回答
默认排序
按发布时间排序
prife
2013-03-10
这家伙很懒,什么也没写!
>create server: 20006430finsh>>BMP err: no mem --- no mem means There is no enough memory in system.
王周旺
2013-03-10
这家伙很懒,什么也没写!
我是在107上想吧图片显示在按键上 我之前认为BMP是边解码边刷到屏幕上的 ,没想到BMP显示要这么多RAM 看样子在107上是做不出那种效果了
rdghx
2013-03-11
这家伙很懒,什么也没写!
rtgui_image_create("/aa/btndemo.bmp",RT_TRUE); //RT_TRUE 加载到内存,使用RT_FALSE不加载到内存。
王周旺
2013-03-13
这家伙很懒,什么也没写!
``` imge1 = rtgui_image_create_from_file("bmp","/aa/img2.bmp",RT_FALSE); rect.x1 = 100;rect.y1=100; rect.x2 = 164;rect.y2 = 164; rtgui_widget_set_rect(RTGUI_WIDGET(button1),&rect); rtgui_button_set_unpressed_image(button1,imge1); rtgui_container_add_child(RTGUI_CONTAINER(win),RTGUI_WIDGET(button1)); rtgui_win_show(win, RT_TRUE); // rtgui_app_run(application); rtgui_app_destroy(application); ``` 让未按下按键显示图片采用这种方式显示不出来 有像素输出但是y值每次都为零图像不能正常显示是什么原因 输出信息98%
王周旺
2013-03-14
这家伙很懒,什么也没写!
``` void app2_entry(void* parameter) { struct rtgui_app* application; struct rtgui_win* win; struct rtgui_button *button1;//*button2,*button3; struct rtgui_rect rect; rtgui_image_t *imge1; application = rtgui_app_create("ExApp2"); if (application != RT_NULL) { rtgui_rect_t rect = {0, 20, 319, 239}; win = rtgui_win_create(RT_NULL, "Window #2", &rect, RTGUI_WIN_STYLE_DEFAULT | RTGUI_WIN_STYLE_DESTROY_ON_CLOSE); imge1 = rtgui_image_create_from_file("bmp","/aa/img1.bmp",RT_TRUE); if(imge1 == RT_NULL) { rt_kprintf("cuo wu "); } button1 = rtgui_button_create("key1"); rect.x1 = 200;rect.y1=100; rect.x2 = 265;rect.y2 = 165; rtgui_widget_set_rect(RTGUI_WIDGET(button1),&rect); rtgui_button_set_unpressed_image(button1,imge1); rtgui_image_get_rect(imge1,&rect); rt_kprintf(" x1 y1 %d %d x2 y2 %d %d ",rect.x1,rect.y1,rect.x2,rect.y2); rtgui_container_add_child(RTGUI_CONTAINER(win),RTGUI_WIDGET(button1)); rtgui_win_show(win, RT_TRUE); // rtgui_app_run(application); rtgui_app_destroy(application); } } ``` 这个代码有错吗?图片就是显示不出来打印信息是98% 谁能帮帮我啊!
aozima
2013-03-14
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
[提示]同类型的内容请不要重复发贴。 前面已经知道 rtgui_image_create_from_file 时要使用 RT_FALSE 不全部加载到内存了。 那么后面的代码应该改过来。 另外建议找一个内存大些的平台来来学习,或试 仿真 也不错,待应用程序完成了,再迁移到硬件上面。 这时就只查硬件平台相关的问题了。 prife的模拟器就不错: [http://www.rt-thread.org/phpBB3/viewtopic.php?f=2&t=2293](使用模拟器——simulator学习和开发RT-Thread应用)
王周旺
2013-03-14
这家伙很懒,什么也没写!
我改成0试过了还是不行 后来又改成了1 总是 打印出来98% 显示位置不正常 显示不到按键上 但是在屏幕的有些位置可以看到一点点图片的颜色
王周旺
2013-03-14
这家伙很懒,什么也没写!
模拟器是好 当时最终还是要在硬件平台上运行正常才可以 而且stm32f4xx和f2xx都很贵 在选型的时候一般都考了成本用的不多
prife
2013-03-14
这家伙很懒,什么也没写!
>模拟器是好 当时最终还是要在硬件平台上运行正常才可以 而且stm32f4xx和f2xx都很贵 在选型的时候一般都考了成本用的不多 --- 使用模拟器反复测试了下,使用RT_FALSE加载,耗费的RAM非常有限。而使用RT_TRUE加载,则是将图片完整加载到RAM中,因此会耗费比较多RAM. 并且没有遇到楼主说的98%问题。
prife
2013-03-14
这家伙很懒,什么也没写!
这个代码测试下。 用法: 把showpic添加到工程里之后, 把1.bmp和2.bmp复制到你板子的根目录下。 然后在finsh中执行 gui2()就应该可以看到效果。simulator测试OK。附图一张。 [attach]1785[/attach]
撰写答案
登录
注册新账号
关注者
0
被浏览
4.1k
关于作者
王周旺
这家伙很懒,什么也没写!
提问
14
回答
33
被采纳
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
RT-Thread 下 Ethernet/IP 的支持
2
使用Env创建RT-Thread标准工程项目
3
profinet从站主线error open adapt
4
2024 RT-Thread睿赛德开发者大会共探商业共赢的开源生态
5
rt-thread 小内存算法源码分析
热门标签
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
MicroPython
C++_cpp
本月问答贡献
a1012112796
21
个答案
3
次被采纳
红枫
8
个答案
3
次被采纳
踩姑娘的小蘑菇
7
个答案
2
次被采纳
张世争
7
个答案
2
次被采纳
三世执戟
9
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
12
次点赞
qq1078249029
2
篇文章
3
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部