用户工具

站点工具


icore4tlvgl_4

差别

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

到此差别页面的链接

后一修订版
前一修订版
icore4tlvgl_4 [2020/12/02 16:12]
zgf 创建
icore4tlvgl_4 [2022/04/01 11:12] (当前版本)
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-16 ​ |  yang  |  初次建立 ​ |  |  V1.0  |  2020-11-16 ​ |  yang  |  初次建立 ​ | 
行 13: 行 12:
 ==== 二、对象属性 ==== ==== 二、对象属性 ====
  
-  * 2.1基本属性+  ​* **2.1基本属性**
 在 LVGL 中所有对象类型都共享一些基本属性: 在 LVGL 中所有对象类型都共享一些基本属性:
-尺寸、父对象、拖动启用、单击启用、位置 +**尺寸、父对象、拖动启用、单击启用、位置** 
-可以使用 lv_obj_set_...和 lv_obj_get_...功能设置/​获取这些属性。例如:+可以使用 ​**lv_obj_set_...**和 **lv_obj_get_...**功能设置/​获取这些属性。例如:
 <code c> <code c>
 /​*设置基础对象属性*/​ /​*设置基础对象属性*/​
-lv_obj_set_size(btn1,​ 100, 50);   ​/​*按键大小*/​+lv_obj_set_size(btn1,​ 100, 50);    /​*按键大小*/​
 lv_obj_set_pos(btn1,​ 20,​30); ​      /​*按键位置*/​ lv_obj_set_pos(btn1,​ 20,​30); ​      /​*按键位置*/​
 </​code>​ </​code>​
  
-  * 2.2具体属性+  ​* **2.2具体属性**
 对象类型也具有特殊的属性。例如滑块具有 对象类型也具有特殊的属性。例如滑块具有
-当前值、自定义样式、最小值、最高值+**当前值、自定义样式、最小值、最高值**
 对于这些属性,每种对象类型都有唯一的 API 函数。例如一个滑块: 对于这些属性,每种对象类型都有唯一的 API 函数。例如一个滑块:
 <code c> <code c>
 /​*设置滑块的特殊属性*/ ​ /​*设置滑块的特殊属性*/ ​
 lv_slider_set_range(slider1,​ 0, 100);            /* 设置滑块的最小、最大值 */  lv_slider_set_range(slider1,​ 0, 100);            /* 设置滑块的最小、最大值 */ 
-lv_slider_set_value(slider1,​ 40, LV_ANIM_ON); ​ /* 设置滑块当下值的位置 */  +lv_slider_set_value(slider1,​ 40, LV_ANIM_ON); ​   /* 设置滑块当下值的位置 */  
-lv_slider_set_action(slider1,​ my_action); ​      ​/* 设置滑块的回调函数 */+lv_slider_set_action(slider1,​ my_action); ​       /* 设置滑块的回调函数 */
 </​code>​ </​code>​
 对象类型的 API 在其文档中进行了描述,不过用户也可以查看相应的头文件(例如 lv_objx .h 或 lv_slider.h)有更详细的介绍。 对象类型的 API 在其文档中进行了描述,不过用户也可以查看相应的头文件(例如 lv_objx .h 或 lv_slider.h)有更详细的介绍。
行 37: 行 36:
 ==== 三、工作机制 ==== ==== 三、工作机制 ====
  
-  * 3.1父类-子类的结构+  ​* **3.1父类-子类的结构**
 父对象可以视为其子对象的容器。每个对象只有一个父对象(屏幕除外),但是一个父对象可以有无限多个子对象。父对象的类型没有限制,但是有典型的父对象(例如按钮)和典型的子对象(例如标签)。 父对象可以视为其子对象的容器。每个对象只有一个父对象(屏幕除外),但是一个父对象可以有无限多个子对象。父对象的类型没有限制,但是有典型的父对象(例如按钮)和典型的子对象(例如标签)。
-  * 3.2一起移动+  ​* **3.2一起移动**
 如果更改了父类对象的位置,则子类对象将与父类对象一起移动。因此,所有位置都相对于父类。(0;​ 0)坐标表示对象将独立于父对象的位置保留在父对象的左上角。 如果更改了父类对象的位置,则子类对象将与父类对象一起移动。因此,所有位置都相对于父类。(0;​ 0)坐标表示对象将独立于父对象的位置保留在父对象的左上角。
 {{ :​icore4t:​icore4t_rtt_lvgl_4_2.png?​direct |}} {{ :​icore4t:​icore4t_rtt_lvgl_4_2.png?​direct |}}
 <code c> <code c>
-lv_obj_t * par = lv_obj_create(lv_scr_act(),​ NULL); /​*创建一个父类对象在屏幕中*/ ​+lv_obj_t * par = lv_obj_create(lv_scr_act(),​ NULL); ​    ​/​*创建一个父类对象在屏幕中*/ ​
 lv_obj_set_size(par,​ 100, 80);                          /​*设置父类对象的位置*/ ​ lv_obj_set_size(par,​ 100, 80);                          /​*设置父类对象的位置*/ ​
-lv_obj_t * obj1 = lv_obj_create(par,​ NULL); ​          ​/​*创建一个子类对象与父类对象中*/​  +lv_obj_t * obj1 = lv_obj_create(par,​ NULL); ​            ​/​*创建一个子类对象与父类对象中*/​  
-lv_obj_set_pos(obj1,​ 10, 10);                            /​*设置子类对象的位置*/ ​+lv_obj_set_pos(obj1,​ 10, 10);                           ​/​*设置子类对象的位置*/ ​
 </​code>​ </​code>​
 修改父类对象的位置: 修改父类对象的位置:
 {{ :​icore4t:​icore4t_rtt_lvgl_4_3.png?​direct |}} {{ :​icore4t:​icore4t_rtt_lvgl_4_3.png?​direct |}}
 <code c> <code c>
-lv_obj_set_pos(par,​ 50, 50); /​*移动父类对象,子类对象跟着移动.*/​+lv_obj_set_pos(par,​ 50, 50);             ​/​*移动父类对象,子类对象跟着移动.*/​
 </​code>​ </​code>​
-  * 3.3仅在父类对象上可见+  ​* **3.3仅在父类对象上可见**
 如果子类对象部分或全部不在其父级之外,则看不见外面的部分。 如果子类对象部分或全部不在其父级之外,则看不见外面的部分。
 {{ :​icore4t:​icore4t_rtt_lvgl_4_4.png?​direct |}} {{ :​icore4t:​icore4t_rtt_lvgl_4_4.png?​direct |}}
 <code c> <code c>
-lv_obj_set_pos(par,​ 50, 50); /​*移动父类对象,子类对象跟着移动.*/​+lv_obj_set_pos(par,​ 50, 50);            /​*移动父类对象,子类对象跟着移动.*/​
 </​code>​ </​code>​
-  * 3.4创建-删除对象+  ​* **3.4创建-删除对象**
 在LVGL中,可以在运行时动态创建和删除对象。这意味着仅当前创建的对象消耗 RAM。例如,如果需要图表,则可以在需要时创建它,并在不可见或不必要时将其删除。 在LVGL中,可以在运行时动态创建和删除对象。这意味着仅当前创建的对象消耗 RAM。例如,如果需要图表,则可以在需要时创建它,并在不可见或不必要时将其删除。
 每个对象类型都有自己的带有统一原型的创建功能。它需要两个参数: 每个对象类型都有自己的带有统一原型的创建功能。它需要两个参数:
-(1) 指向父对象的指针。要创建屏幕,请以 NULL 作为父级。 + 
-(2) (可选)用于复制具有相同类型的对象的指针。该复制对象可以为 NULL,​不复制操作。 +**(1) 指向父对象的指针。要创建屏幕,请以 NULL 作为父级。** 
-所有对象均以 C 语言中的 lv_obj_t 指针作为句柄进行引用。以后可以使用该指针设置或获取对象的属性。+ 
 +**(2) (可选)用于复制具有相同类型的对象的指针。该复制对象可以为 NULL,​不复制操作。** 
 + 
 +所有对象均以 C 语言中的 ​**lv_obj_t** 指针作为句柄进行引用。以后可以使用该指针设置或获取对象的属性。
 创建函数如下所示: 创建函数如下所示:
 <code c> <code c>
行 73: 行 75:
 void lv_obj_del(lv_obj_t * obj); void lv_obj_del(lv_obj_t * obj);
 </​code>​ </​code>​
-lv_obj_del 将立即删除该对象。如果由于任何原因无法立即删除对象,可以使用 lv_obj_del_async(obj)。这很有用,例如,如果您想在子 LV_EVENT_DELETE 信号中删除对象的父对象。 +**lv_obj_del** 将立即删除该对象。如果由于任何原因无法立即删除对象,可以使用 ​**lv_obj_del_async(obj)**。这很有用,例如,如果您想在子** LV_EVENT_DELETE** 信号中删除对象的父对象。 
-您可以使用以下方法删除对象的所有子对象(但不能删除对象本身)lv_obj_clean:+您可以使用以下方法删除对象的所有子对象(但不能删除对象本身)**lv_obj_clean**
 <code c> <code c>
 void lv_obj_clean(lv_obj_t * obj); void lv_obj_clean(lv_obj_t * obj);
行 80: 行 82:
 ==== 四、屏幕 ==== ==== 四、屏幕 ====
  
-  * 4.1创建屏幕+  ​* **4.1创建屏幕**
 屏幕是没有父对象的特殊对象。因此,可以像这样创建它们: 屏幕是没有父对象的特殊对象。因此,可以像这样创建它们:
 <code c> <code c>
行 86: 行 88:
 </​code>​ </​code>​
 可以使用任何对象类型创建屏幕。例如,把基础对象或图片作为壁纸。 可以使用任何对象类型创建屏幕。例如,把基础对象或图片作为壁纸。
-  * 4.2获取活动屏幕 +  ​* **4.2获取活动屏幕** 
-每个显示器上始终有一个活动屏幕。默认情况下,该库为每个显示器创建并加载一个“基础对象”作为屏幕。要获取当前活动的屏幕,请使用函数 lv_scr_act()来获取活动屏幕。+每个显示器上始终有一个活动屏幕。默认情况下,该库为每个显示器创建并加载一个“基础对象”作为屏幕。要获取当前活动的屏幕,请使用函数 ​**lv_scr_act()**来获取活动屏幕。
 <code c> <code c>
-lv_obj_t * par = lv_obj_create(lv_scr_act(),​ NULL);/​*第一个参数为获取的当前活动屏幕*/​+lv_obj_t * par = lv_obj_create(lv_scr_act(),​ NULL); ​    ​/​*第一个参数为获取的当前活动屏幕*/​
 </​code>​ </​code>​
-  * 4.3 加载屏幕  +  ​* **4.3 加载屏幕**  
-要加载一个新屏幕,使用函数lv_scr_load(scr1)。 +要加载一个新屏幕,使用函数**lv_scr_load(scr1)**。 
-  * 4.4 动态切换屏幕  +  ​* **4.4 动态切换屏幕**  
-也可以使用函数lv_scr_load_anim(scr,​ transition_type,​ time, delay, auto_del)动态切换到新屏幕。切换类型如下: +也可以使用函数**lv_scr_load_anim(scr,​ transition_type,​ time, delay, auto_del)**动态切换到新屏幕。切换类型如下: 
-  * LV_SCR_LOAD_ANIM_NONE:​ 延时delay毫秒后立即切换 +  ​* **LV_SCR_LOAD_ANIM_NONE**: 延时**delay**毫秒后立即切换 
-  * LV_SCR_LOAD_ANIM_OVER_LEFT/​RIGHT/​TOP/​BOTTOM新屏幕将从给定方向移入并覆盖旧屏幕 +  ​* **LV_SCR_LOAD_ANIM_OVER_LEFT/​RIGHT/​TOP/​BOTTOM** 新屏幕将从给定方向移入并覆盖旧屏幕 
-  * LV_SCR_LOAD_ANIM_MOVE_LEFT/​RIGHT/​TOP/​BOTTOM新屏幕将从给定方向移入,但旧屏幕不被覆盖,而是被新屏幕推出显示器 +  ​* **LV_SCR_LOAD_ANIM_MOVE_LEFT/​RIGHT/​TOP/​BOTTOM** 新屏幕将从给定方向移入,但旧屏幕不被覆盖,而是被新屏幕推出显示器 
-  * LV_SCR_LOAD_ANIM_FADE_ON 使新屏幕淡入旧屏幕 +  ​* **LV_SCR_LOAD_ANIM_FADE_ON** 使新屏幕淡入旧屏幕 
-设置 auto_del 为 true 则会在动画结束时自动删除旧屏幕。在切换屏幕delay毫秒后,新屏幕将变为活动状态,此后调用函数lv_scr_act()将返回新屏幕。 +设置 ​**auto_del** 为 **true** 则会在动画结束时自动删除旧屏幕。在切换屏幕**delay**毫秒后,新屏幕将变为活动状态,此后调用函数**lv_scr_act()**将返回新屏幕。 
-  * 4.5 处理多个显示 +  ​* **4.5 处理多个显示** 
-屏幕在当前选择的默认显示器上创建。默认显示器是通过lv_disp_drv_register最后注册的显示屏,你也可以使用函数lv_disp_set_default(disp)来选择新的默认显示器。 +屏幕在当前选择的默认显示器上创建。默认显示器是通过**lv_disp_drv_register**最后注册的显示屏,你也可以使用函数**lv_disp_set_default(disp)**来选择新的默认显示器。 
-另外函数lv_scr_act(),lv_scr_load()和lv_scr_load_anim()都在默认屏幕上进行操作。+另外函数**lv_scr_act()****lv_scr_load()****lv_scr_load_anim()**都在默认屏幕上进行操作。
  
 ==== 五、小部件 ==== ==== 五、小部件 ====
  
-小部件可以包含多个部分。例如,按钮仅具有主要部分,而滑块则由背景,指示器和旋钮组成。各部分的名称构造类似LV_ ​ +  <​TYPE>​ _PART_ <​NAME>​。例如LV_BTN_PART_MAIN或者LV_SLIDER_PART_KNOB。+小部件可以包含多个部分。例如,按钮仅具有主要部分,而滑块则由背景,指示器和旋钮组成。各部分的名称构造类似**LV_  +  <​TYPE>​ _PART_ <​NAME>​**。例如**LV_BTN_PART_MAIN**或者**LV_SLIDER_PART_KNOB**
 当给对象增加样式时通常会使用到小部件。使用小部件可以将不同的样式分配给对象的不同小部件。 当给对象增加样式时通常会使用到小部件。使用小部件可以将不同的样式分配给对象的不同小部件。
  
行 112: 行 114:
  
 对象可以处于以下状态的组合: 对象可以处于以下状态的组合:
-  * LV_STATE_DEFAULT 正常,已释放 +  ​* **LV_STATE_DEFAULT** 正常,已释放 
-  * LV_STATE_CHECKED 切换或选中 +  ​* **LV_STATE_CHECKED** 切换或选中 
-  * LV_STATE_FOCUSED 通过键盘或编码器聚焦或通过触摸板/​鼠标单击 +  ​* **LV_STATE_FOCUSED** 通过键盘或编码器聚焦或通过触摸板/​鼠标单击 
-  * LV_STATE_EDITED  由编码器编辑 +  ​* **LV_STATE_EDITED**  由编码器编辑 
-  * LV_STATE_HOVERED 鼠标悬停(现在不支持) +  ​* **LV_STATE_HOVERED** 鼠标悬停(现在不支持) 
-  * LV_STATE_PRESSED 已按下 +  ​* **LV_STATE_PRESSED** 已按下 
-  * LV_STATE_DISABLED 禁用或不活动 +  ​* **LV_STATE_DISABLED** 禁用或不活动 
-当用户按下,释放,聚焦等对象时,状态通常由库自动更改。但是,状态也可以手动更改。使用lv_obj_set_state(obj,​ part, LV_STATE...)来完全覆盖当前状态,请使用。要设置或清除给定状态(但保持其他状态不变)使用lv_obj_add/​clear_state(obj,​ part, LV_STATE_...),在两种情况下都可以使用 ORed 状态值。例如lv_obj_set_state(obj,​ part, LV_STATE_PRESSED | LV_PRESSED_CHECKED)。+当用户按下,释放,聚焦等对象时,状态通常由库自动更改。但是,状态也可以手动更改。使用**lv_obj_set_state(obj,​ part, LV_STATE...)**来完全覆盖当前状态,请使用。要设置或清除给定状态(但保持其他状态不变)使用**lv_obj_add/​clear_state(obj,​ part, LV_STATE_...)**,在两种情况下都可以使用 ​**ORed** 状态值。例如**lv_obj_set_state(obj,​ part, LV_STATE_PRESSED | LV_PRESSED_CHECKED)**
icore4tlvgl_4.1606896762.txt.gz · 最后更改: 2020/12/02 16:12 由 zgf