用户工具

站点工具


icore4tlvgl_9

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
icore4tlvgl_9 [2020/12/04 17:47]
zgf 创建
icore4tlvgl_9 [2022/04/01 11:13] (当前版本)
sean
行 2: 行 2:
 |技术支持电话|**0379-69926675-801**||| |技术支持电话|**0379-69926675-801**|||
 |技术支持邮件|Gingko@vip.163.com||| |技术支持邮件|Gingko@vip.163.com|||
-|技术论坛|http://​www.eeschool.org||| 
 ^  版本 ​ ^  日期 ​ ^  作者 ​ ^  修改内容 ​ ^ ^  版本 ​ ^  日期 ​ ^  作者 ​ ^  修改内容 ​ ^
 |  V1.0  |  2020-11-28 ​ |  yang  |  初次建立 ​ |  |  V1.0  |  2020-11-28 ​ |  yang  |  初次建立 ​ | 
  
-===== 实验lv_btn按钮 ​=====+===== 实验Layers图层 ​=====
  
 +==== 一、创建顺序 ====
  
-{{ :icore4t:icore4t_rtt_lvgl_7_1.gif?direct |}}+默认情况下,LVGL 在背景上绘制旧对象,在前景上绘制新对象。例如,假设我们在屏幕中创建一个名为 button1 的按钮,然后又创建另一个名为 button2 的按钮。然后你会发现 button1(及其子对象)将在背景图层中,并且可以被 button2 及其子对象覆盖。 
 + 
 + 
 +{{ :icore4t:icore4t_rtt_lvgl_9_1.png?direct |}}
  
 <code c> <code c>
 +void lv_gui_run(void)
 +{
 + lvgl2rtt_init("​lcd"​); ​                               /* 初始化lvgl2rtt */
  
 + lv_obj_t * btn1 = lv_btn_create(lv_scr_act(),​ NULL); /* 在屏幕中创建button1 */
 + lv_obj_set_pos(btn1,​ 80, 50);                        /* 设置button1坐标 */
 + lv_obj_set_size(btn1,​ 150, 100);                     /* 设置button1尺寸 */
 +
 + lv_obj_t * btn2 = lv_btn_create(lv_scr_act(),​ btn1); /* 在屏幕中创建button2 */
 + lv_obj_set_pos(btn2,​ 180, 80);                       /* 设置button2坐标 */
 + lv_obj_set_size(btn2,​ 150, 100);                     /* 设置button2尺寸 */
 +
 + lv_obj_t * label1 = lv_label_create(btn1,​ NULL); ​    /* 在button1中创建一个标签子对象 */
 + lv_label_set_text(label1,​ "​Button 1"​); ​              /* 设置标签内容 */
 + lv_obj_t * label2 = lv_label_create(btn2,​ NULL); ​    /* 在button2中创建一个标签子对象 */
 + lv_label_set_text(label2,​ "​Button 2"​); ​              /* 设置标签内容 */
 +}
 </​code>​ </​code>​
  
 +==== 二、设置到前景图层 ====
 +
 +有几种方法可以将对象置于前台:
 +  * 使用 **lv_obj_set_top (obj, true)**。如果 obj 或它的任何子对象被点击,那么 LVGL 将自动将该对象置于前台。它的工作原理类似于 PC 上的典型 GUI。当点击背景中的一个窗口时,它会自动来到前台。
 +  * 使用 **lv_obj_move_foreground(obj)** 显式地告诉库将一个对象放到前台。类似地,使 用**lv_obj_move_background(obj)** 移动对象到背景图层中。
 +  * 当 **lv_obj_set_parent(obj,​ new_parent)** 被使用时,obj 将在 new_parent 的前台。
 +
 +下面的例子是使用第一种方式,通过点击将按钮自动置于前台。
 +
 +{{ :​icore4t:​icore4t_rtt_lvgl_9_2.gif?​direct |}}
 +
 +<code c>
 +void lv_gui_run(void)
 +{
 + lvgl2rtt_init("​lcd"​); ​                                /* 初始化lvgl2rtt */
 + lv_obj_t * btn1 = lv_btn_create(lv_scr_act(),​ NULL); ​ /* 在屏幕中创建button1 */
 + lv_obj_set_pos(btn1,​ 80, 50);                         /* 设置button1坐标 */
 + lv_obj_set_size(btn1,​ 150, 100);                      /* 设置button1尺寸 */
 + lv_obj_set_top(btn1,​ true); ​                          /* 被点击时置于前景图层 */
 + lv_obj_t * btn2 = lv_btn_create(lv_scr_act(),​ btn1); ​ /* 在屏幕中创建button2 */
 + lv_obj_set_pos(btn2,​ 180, 80);                        /* 设置button2坐标 */
 + lv_obj_set_size(btn2,​ 150, 100);                      /* 设置button2尺寸 */
 + lv_obj_set_top(btn2,​ true); ​                          /* 被点击时置于前景图层 */
 +
 + lv_obj_t * label1 = lv_label_create(btn1,​ NULL); ​     /* 在button1中创建一个标签子对象 */
 + lv_label_set_text(label1,​ "​Button 1"​); ​               /* 设置标签内容 */
 + lv_obj_t * label2 = lv_label_create(btn2,​ NULL); ​     /* 在button2中创建一个标签子对象 */
 + lv_label_set_text(label2,​ "​Button 2"​); ​               /* 设置标签内容 */
 +}
 +</​code>​
 +
 +下面的例子是使用第二种方式,通过软件命令将按钮自动置于前台。
 +
 +{{ :​icore4t:​icore4t_rtt_lvgl_9_2.gif?​direct |}}
 +
 +<code c>
 +void lv_gui_run(void)
 +{
 + lvgl2rtt_init("​lcd"​); ​                               /* 初始化lvgl2rtt */
 +
 + lv_obj_t * btn1 = lv_btn_create(lv_scr_act(),​ NULL); /* 在屏幕中创建button1 */
 + lv_obj_set_pos(btn1,​ 80, 50);                        /* 设置button1坐标 */
 + lv_obj_set_size(btn1,​ 150, 100);                     /* 设置button1尺寸 */
 + lv_obj_t * btn2 = lv_btn_create(lv_scr_act(),​ btn1); /* 在屏幕中创建button2 */
 + lv_obj_set_pos(btn2,​ 180, 80);                       /* 设置button2坐标 */
 + lv_obj_set_size(btn2,​ 150, 100);                     /* 设置button2尺寸 */
 +
 + lv_obj_t * label1 = lv_label_create(btn1,​ NULL); ​    /* 在button1中创建一个标签子对象 */
 + lv_label_set_text(label1,​ "​Button 1"​); ​              /* 设置标签内容 */
 + lv_obj_t * label2 = lv_label_create(btn2,​ NULL); ​    /* 在button2中创建一个标签子对象 */
 + lv_label_set_text(label2,​ "​Button 2"​); ​              /* 设置标签内容 */
 +
 + while(true){
 + lv_obj_move_foreground(btn1); ​               /* 将button1置于前景图层 */
 + rt_thread_mdelay(1000);​
 + lv_obj_move_foreground(btn2); ​               /* 将button2置于前景图层 */
 + rt_thread_mdelay(1000);​
 + }
 +}
 +</​code>​
 +
 +==== 三、顶层和系统层 ====
 +
 +LVGL 使用两个特殊的层,分别名为 **layer_top** 和 **layer_sys**。两者在显示器的所有屏幕上都是可见的和常见的。但是,它们不能在多个物理显示器之间共享。**layer_top** 总是位于默认屏幕的顶部 ( **lv_scr_act()** ),而 **layer_sys** 位于 **layer_top** 的顶部
 +用户可以使用 **layer_top** 创建一些随处可见的内容。例如,一个菜单栏,一个弹出窗口等等。如果单击属性是启用的,那么 **layer_top** 将吸收所有用户单击,并作为一个模块运行。
 +
 +<code c>
 +lv_obj_set_click (lv_layer_top(),​ true);
 +</​code>​
  
 +在 LVGL 上 **layer_sys** 也用于类似的目的。例如,LVGL将鼠标光标放在系统层上,以确保它总是可见的。
  
  
  
  
icore4tlvgl_9.1607075278.txt.gz · 最后更改: 2020/12/04 17:47 由 zgf