搜索
bottom↓
回复: 3

RTGUI视图使用问题

[复制链接]

出0入0汤圆

发表于 2012-5-17 13:15:04 | 显示全部楼层 |阅读模式
  1. void workbench_panel1(void* parameter)
  2. {
  3.    rt_mq_t mq;
  4.    rtgui_view_t* view;
  5.    rtgui_label_t* label;
  6.    struct rtgui_workbench* workbench;
  7.    rtgui_rect_t rect={0, 0, 320, 240};

  8.    mq = rt_mq_create("wmq", 256, 8, RT_IPC_FLAG_FIFO);
  9.    
  10.    rtgui_thread_register(rt_thread_self(), mq);
  11.    
  12.    workbench = rtgui_workbench_create("main", "workbench #1");
  13.    if (workbench == RT_NULL) return;

  14.    view = rtgui_view_create("view");
  15.    if (view == RT_NULL) return;   
  16.    RTGUI_WIDGET_BACKGROUND(RTGUI_WIDGET(view)) = blue;

  17.    label = rtgui_label_create("RT-Thread");
  18.    rect.x1 = 10; rect.y1 = 10;
  19.    rect.x2 = 210; rect.y2 = 50;

  20.    rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect);
  21.    rtgui_container_add_child(RTGUI_CONTAINER(view), RTGUI_WIDGET(label));

  22.    
  23.    rtgui_workbench_add_view(workbench, view);
  24.    
  25.    rtgui_view_show(view, RT_FALSE);

  26.    
  27.    rtgui_workbench_event_loop(workbench);

  28.    
  29.    rtgui_thread_deregister(rt_thread_self());

  30.    /* delete message queue */
  31.    rt_mq_delete(mq);
  32. }

  33. /* workbench */
  34. void workbench_init()
  35. {
  36.    rt_thread_t tid;

  37.    tid = rt_thread_create("wb", workbench_panel1, RT_NULL, 3072, 20, 5);
  38.    if (tid != RT_NULL) rt_thread_startup(tid);
  39. }
  40. extern rt_err_t rt_hw_lcd_init(void);
  41. void gui_init()
  42. {
  43.       rtgui_rect_t rect;
  44.       rt_device_t lcd;
  45.       /*LCD*/
  46.           rt_hw_lcd_init();

  47.       lcd = rt_device_find("lcd");
  48.       if (lcd != RT_NULL)
  49.       {
  50.          rt_device_init(lcd);
  51.          rtgui_graphic_set_device(lcd);

  52.          /* RT-Thread/GUI server */
  53.           rtgui_system_server_init();

  54.          
  55.           rect.x1 = 0;
  56.           rect.y1 = 0;
  57.           rect.x2 = 320;
  58.           rect.y2 = 240;
  59.           rtgui_panel_register("main", &rect);
  60.           rtgui_panel_set_default_focused("main");

  61.          rt_device_init_all();

  62.          /* workbench */
  63.          workbench_init();
  64.       }      
  65. }
复制代码
这是一个stm32_radio里的example文件夹下的4_gui_single_ panel里的例子,图形驱动已经完成的。主要是程序执行RTGUI_WIDGET_BACKGROUND(RTGUI_WIDGET(view)) = blue;时没对整个屏幕设置成蓝色,就是X方向上留下几列没设置成蓝色。而且我看程序也没对view的大小进行设置,所以不是太明白。求高人指点

我现在又在程序里加了rtgui_widget_get_rect(RTGUI_WIDGET(view), &rect);我看了rect的值是全屏的?奇怪啊 为什么 RTGUI_WIDGET_BACKGROUND(RTGUI_WIDGET(view)) = blue;不全屏啊

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

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 2012-5-17 13:24:33 | 显示全部楼层
我记得veiw应该就不是需要设定大小的,它的大小有pannel的大小确定。

出0入0汤圆

 楼主| 发表于 2012-5-17 15:16:18 | 显示全部楼层
非常感谢回复,原因自己找到了,主要是LCD设备驱动设计时屏幕的宽高我搞反了,我太粗心了

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-10-3 02:36

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

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