用户工具

站点工具


icore4tlvgl_5

差别

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

到此差别页面的链接

后一修订版
前一修订版
icore4tlvgl_5 [2020/12/02 16:47]
zgf 创建
icore4tlvgl_5 [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-18 ​ |  yang  |  初次建立 ​ |  |  V1.0  |  2020-11-18 ​ |  yang  |  初次建立 ​ | 
行 57: 行 56:
   * **1.3对齐**   * **1.3对齐**
 使用**lv_obj_align(obj,​ obj_ref, LV_ALIGN_...,​ x_ofs, y_ofs)**可以将一个对象与另一个对象对齐。 ​ 使用**lv_obj_align(obj,​ obj_ref, LV_ALIGN_...,​ x_ofs, y_ofs)**可以将一个对象与另一个对象对齐。 ​
-• **obj** 是要对齐的对象。 +  * **obj** 是要对齐的对象。 
-• **obj_ref** 是参考对象,**obj** 将与之对齐。如果为**obj_ref = NULL**,则将使用**obj**的父项。  +  ​* ​**obj_ref** 是参考对象,**obj** 将与之对齐。如果为**obj_ref = NULL**,则将使用**obj**的父项。  
-• 第三个参数**LV_ALIGN_...**是对齐方式的类型。 +  ​* ​第三个参数**LV_ALIGN_...**是对齐方式的类型。 
-• 最后两个参数 **x_ofs, y_ofs**允许您在对齐对象后将其移动指定数量的像素。+  ​* ​最后两个参数 **x_ofs, y_ofs**允许您在对齐对象后将其移动指定数量的像素。
 对齐方式类型如下图所示,对齐类型的构建方式类似于 **LV_ALIGN_ ​ +  OUT_TOP_MID**。 对齐方式类型如下图所示,对齐类型的构建方式类似于 **LV_ALIGN_ ​ +  OUT_TOP_MID**。
 {{ :​icore4t:​icore4t_rtt_lvgl_5_1.png?​direct |}} {{ :​icore4t:​icore4t_rtt_lvgl_5_1.png?​direct |}}
行 67: 行 66:
  
 <code c> <code c>
-lv_obj_set_width_fit(obj,​ new_width) ​       ​/*设置象obj的水平填充*/ +/*在图像下方齐文本后,y坐标值加10,即往下再移动10像素点*/ 
-lv_obj_set_height_fit(objnew_height     /*设置象obj的垂直填充*/+lv_obj_align(text, image, LV_ALIGN_OUT_BOTTOM_MID,​ 0, 10)  
 +lv_obj_align(text,​ NULL, LV_ALIGN_CENTER,​ 00      ​/*在其父级中间齐文本*/
 </​code>​ </​code>​
-lv_obj_align_origo 类似于lv_obj_align,不过它使对象中心对齐。例如: 
  
-如果 LV_USE_OBJ_REALIGN 在 lv_conf..h 中使能,则对齐参数会被保存在对象中。然后,只需调用lv_obj_realign(obj)即可重新对齐对象。等效于lv_obj_align使用相同的参数再次调用。 +**lv_obj_align_origo** 类似于**lv_obj_align**,不过它使对象中心对齐。例如: 
-如果对象对齐使用的是lv_obj_align_origo,则在对象重新对齐时该函数将被再次调用。 + 
-函数lv_obj_align_x/​y和lv_obj_align_origo_x/​y能够使对象在一个轴线上对齐。如果对象使用了lv_obj_set_auto_realign(obj,​ true),则对象的大小被lv_obj_set_width/​height/​size()函数改变时,对象将自动重新对齐。当将尺寸动态变化应用于对象并且需要保持原始相对位置时,这非常有用。 +<code c> 
-请注意,屏幕的尺寸无法更改。尝试在屏幕上使用这些功能将导致不确定的行为。+/​*将按钮的中心对准图像的底部*/​ 
 +lv_obj_align_origo(btn,​ image, LV_ALIGN_OUT_BOTTOM_MID,​ 0, 0)  
 +</​code>​ 
 + 
 +如果** LV_USE_OBJ_REALIGN** 在 **lv_conf.h** 中使能,则对齐参数会被保存在对象中。然后,只需调用**lv_obj_realign(obj)**即可重新对齐对象。等效于**lv_obj_align**使用相同的参数再次调用。 
 + 
 +如果对象对齐使用的是**lv_obj_align_origo**,则在对象重新对齐时该函数将被再次调用。 
 +函数**lv_obj_align_x/​y****lv_obj_align_origo_x/​y**能够使对象在一个轴线上对齐。如果对象使用了**lv_obj_set_auto_realign(obj,​ true)**,则对象的大小被**lv_obj_set_width/​height/​size()**函数改变时,对象将自动重新对齐。当将尺寸动态变化应用于对象并且需要保持原始相对位置时,这非常有用。 
 + 
 +**请注意,屏幕的尺寸无法更改。尝试在屏幕上使用这些功能将导致不确定的行为。** 
 +{{ :​icore4t:​icore4t_rtt_lvgl_5_2.gif?​direct |}}
  
   * **1.4父类与子类**   * **1.4父类与子类**
-可以使用lv_obj_set_parent(obj,​ new_parent)设置对象的新父对象。要获取当前的父级,请使用lv_obj_get_parent(obj)。+可以使用**lv_obj_set_parent(obj,​ new_parent)**设置对象的新父对象。要获取当前的父级,请使用**lv_obj_get_parent(obj)**
  
-要获取对象的子类,请使用lv_obj_get_child(obj,​ child_prev)(从最后到第一个)或lv_obj_get_child_back(obj,​ child_prev)(从第一个到最后)。要获得第一个孩子,将NULL作为第二个参数传递,并使用返回值遍历这些孩子。如果没有更多的孩子,该函数将返回NULL。例如:+要获取对象的子类,请使用**lv_obj_get_child(obj,​ child_prev)**(从最后到第一个)或**lv_obj_get_child_back(obj,​ child_prev)**(从第一个到最后)。要获得第一个孩子,将**NULL**作为第二个参数传递,并使用返回值遍历这些孩子。如果没有更多的孩子,该函数将返回**NULL**。例如:
  
-调用函数lv_obj_count_children(obj) 告能够获取该对象的子类数量。使用函数 lv_obj_count_children_recursive(obj) 也可以获取子类数量,不过使用的是递归方法。+<code c> 
 +lv_obj_t * child = lv_obj_get_child(parent,​ NULL); 
 +while(child) { 
 + child = lv_obj_get_child(parent,​ child); ​   /​*获取子类并进行操作*/​ 
 +
 +</​code>​ 
 + 
 +调用函数**lv_obj_count_children(obj)** 告能够获取该对象的子类数量。使用函数 ​**lv_obj_count_children_recursive(obj)** 也可以获取子类数量,不过使用的是递归方法。
   * **1.5属性**   * **1.5属性**
-基础对象有一些属性可以通过以下方式启用/​禁用: lv_obj_set_...(obj,​ true/​false) +基础对象有一些属性可以通过以下方式启用/​禁用: ​**lv_obj_set_...(obj,​ true/false)** 
-  * • hidden隐藏对象。它不会被绘制,输入设备会将其视为不存在。它的子类也将被隐藏。 +  * **hidden**隐藏对象。它不会被绘制,输入设备会将其视为不存在。它的子类也将被隐藏。 
-  * • click 允许您通过输入设备单击对象。如果禁用,则单击事件将传递到此事件后面的对象(例如,默认情况下不可点击标签)。 +  * **click** 允许您通过输入设备单击对象。如果禁用,则单击事件将传递到此事件后面的对象(例如,默认情况下不可点击标签)。 
-  * • top 如果启用,则单击此对象或其任何子级时,该对象将进入前台。 +  * **top** 如果启用,则单击此对象或其任何子级时,该对象将进入前台。 
-  * • drag 启用拖动(通过输入设备移动)。 +  * **drag** 启用拖动(通过输入设备移动)。 
-  * • drag_dir 仅在特定方向上启用拖动。(LV_DRAG_DIR_HOR/​VER/​ALL )。 +  * **drag_dir** 仅在特定方向上启用拖动。(**LV_DRAG_DIR_HOR/​VER/​ALL** )。 
-  * • drag_throw 通过拖动启用“throwing”,使对象具有动量。 +  * **drag_throw** 通过拖动启用“throwing”,使对象具有动量。 
-  * • drag_parent 如果启用,则在拖动过程中将移动对象的父对象。看起来就像拖动父级。+  * **drag_parent** 如果启用,则在拖动过程中将移动对象的父对象。看起来就像拖动父级。
   * 使用递归检查,因此也可以传递给父级的父级。   * 使用递归检查,因此也可以传递给父级的父级。
-  * • parent_event 将事件传播给父母。递归检查,因此也可以传播给祖父母。 +  * **parent_event** 将事件传播给父母。递归检查,因此也可以传播给祖父母。 
-  * • opa_scale_enable 启用不透明度缩放。+  * **opa_scale_enable** 启用不透明度缩放。 
   * **1.6保护**   * **1.6保护**
-库中有一些自动发生的特定操作。为防止一种或多种此类行为,您可以保护对象免受它们干扰。使用函数 ​lv_obj_set/​clear_protect(obj,​ LV_PROTECT_...) 设置/​清除对象的保护。具体保护措施如下: +库中有一些自动发生的特定操作。为防止一种或多种此类行为,您可以保护对象免受它们干扰。使用函数 ​**lv_obj_add/​clear_protect(obj,​ LV_PROTECT_...)** 设置/​清除对象的保护。具体保护措施如下: 
-  * • LV_PROTECT_NONE 没有保护 +  * **LV_PROTECT_NONE** 没有保护 
-  * • LV_PROTECT_POS 防止自动定位(例如,容器中的布局) +  * **LV_PROTECT_POS** 防止自动定位(例如,容器中的布局) 
-  * • LV_PROTECT_FOLLOW 在自动排列中防止被追随(进行“换行”) +  * **LV_PROTECT_FOLLOW** 在自动排列中防止被追随(进行“换行”) 
-  * • LV_PROTECT_PARENT 防止自动更改父项。 +  * **LV_PROTECT_PARENT** 防止自动更改父项。 
-  * • LV_PROTECT_PRESS_LOST 当触点滑出对象时,防止丢失触点。(例如,按下某个按钮后,可以滑动触点到按钮外部进行释放) +  * **LV_PROTECT_PRESS_LOST** 当触点滑出对象时,防止丢失触点。(例如,按下某个按钮后,可以滑动触点到按钮外部进行释放) 
-  * • LV_PROTECT_CLICK_FOCUS 如果对象在组中并且启用了单击焦点,则防止其自动+  * **LV_PROTECT_CLICK_FOCUS** 如果对象在组中并且启用了单击焦点,则防止其自动
   * 聚焦。   * 聚焦。
-  * • LV_PROTECT_CHILD_CHG 禁用子类更改信号。库内部使用。+  * **LV_PROTECT_CHILD_CHG** 禁用子类更改信号。库内部使用。 
   * **1.7扩展点击区域**   * **1.7扩展点击区域**
-默认情况下,用户只能在该对象的对应区域上单击该对象,但是用户可以使用lv_obj_set_ext_click_area(obj,​ left, right, top, bottom)来扩展该区域。 参数left/​right/​top/​bottom描述可点击区域在每个方向上超出默认设置的范围。 +默认情况下,用户只能在该对象的对应区域上单击该对象,但是用户可以使用**lv_obj_set_ext_click_area(obj,​ left, right, top, bottom)**来扩展该区域。 参数**left/​right/​top/​bottom**描述可点击区域在每个方向上超出默认设置的范围。 
-不过这个特性需要在 lv_conf.h 中使能 LV_USE_EXT_CLICK_AREA。可能的值为: +不过这个特性需要在 lv_conf.h 中使能 ​**LV_USE_EXT_CLICK_AREA**。可能的值为: 
-  * • LV_EXT_CLICK_AREA_FULL 将所有 4 个坐标存储为 lv_coord_t +  * **LV_EXT_CLICK_AREA_FULL** 将所有 4 个坐标存储为 lv_coord_t 
-  * • LV_EXT_CLICK_AREA_TINY 仅将水平和垂直坐标(使用eft/​right和top/​bottom中较大的值)存储为 uint8_t +  * **LV_EXT_CLICK_AREA_TINY** 仅将水平和垂直坐标(使用**eft/​right和top/​bottom**中较大的值)存储为 uint8_t 
-  * • LV_EXT_CLICK_AREA_OFF 禁用此特性+  * **LV_EXT_CLICK_AREA_OFF** 禁用此特性 
 ==== 二、相关特性 ==== ==== 二、相关特性 ====
  
 此部分与基础对象相关的LVGL特性都有专门章节进行介绍,因此本章只简要概述。 此部分与基础对象相关的LVGL特性都有专门章节进行介绍,因此本章只简要概述。
   * **2.1屏幕**   * **2.1屏幕**
-使用函数lv_obj_t * screen = lv_obj_create(NULL,​ NULL)可以创建新屏幕,调用lv_scr_load(screen)来加载新屏幕。而函数lv_scr_act()可以返回当前活动屏幕的指针。 +使用函数**lv_obj_t * screen = lv_obj_create(NULL,​ NULL)**可以创建新屏幕,调用**lv_scr_load(screen)**来加载新屏幕。而函数**lv_scr_act()**可以返回当前活动屏幕的指针。 
-若有多个屏幕,则可以使用lv_disp_set_default设置默认屏幕。函数lv_obj_get_screen(obj)可以获取对象所在的屏幕。+ 
 +若有多个屏幕,则可以使用**lv_disp_set_default**设置默认屏幕。函数**lv_obj_get_screen(obj)**可以获取对象所在的屏幕。
   * **2.2图层**   * **2.2图层**
-LVGL有两个自动生成的图层,顶层、系统层。它们独立于屏幕,并且将显示在每个屏幕上。顶层是在屏幕上的每个对象的上方,系统层在顶层之上。用户可以将任何弹出窗口自由添加到顶层。但是,系统层仅限于系统级的内容(例如,lv_indev_set_cursor()将鼠标光标将放在此处)。 +LVGL有两个自动生成的图层,**顶层、系统层**。它们独立于屏幕,并且将显示在每个屏幕上。顶层是在屏幕上的每个对象的上方,系统层在顶层之上。用户可以将任何弹出窗口自由添加到顶层。但是,系统层仅限于系统级的内容(例如,**lv_indev_set_cursor()**将鼠标光标将放在此处)。 
-函数 lv_layer_top() 返回一个顶层指针,lv_layer_sys() 给出一个到系统层的指针。 + 
-你可以使用lv_obj_move_foreground(obj)把一个对象移动到前景图层,使用lv_obj_move_background(obj)将它发送到后台。+函数 ​**lv_layer_top()** 返回一个顶层指针,**lv_layer_sys()** 给出一个到系统层的指针。 
 + 
 +你可以使用**lv_obj_move_foreground(obj)**把一个对象移动到前景图层,使用**lv_obj_move_background(obj)**将它发送到后台。
   * **2.3事件**   * **2.3事件**
-要为对象设置事件回调,请使用 lv_obj_set_event_cb(obj,​ event_cb)。 +要为对象设置事件回调,请使用 ​**lv_obj_set_event_cb(obj,​ event_cb)** 
-要将事件手动发送给对象,请使用 lv_event_send(obj,​ LV_EVENT_...,​ data)。+ 
 +要将事件手动发送给对象,请使用 ​**lv_event_send(obj,​ LV_EVENT_...,​ data)**
   * **2.4状态**   * **2.4状态**
-当用户按下,释放,聚焦等对象时,状态通常由库自动更改。不过状态也可以手动更改。要完全覆盖当前状态,请使用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)**
   * **2.5样式**   * **2.5样式**
-使用lv_obj_add_style(obj,​ part, &​new_style)向对象添加样式,基础对象使用所有类似矩形的样式属性。 +使用**lv_obj_add_style(obj,​ part, &​new_style)**向对象添加样式,基础对象使用所有类似矩形的样式属性。 
-要从对象中删除所有样式,请使用 lv_obj_reset_style_list(obj,​ part)。 + 
-如果修改对象已经使用的样式,则使用lv_obj_refresh_style(obj) 刷新每个对象使用的样式,或者使用lv_obj_report_style_mod(&​style)用给定样式刷新受影响的对象。如果lv_obj_report_style_mod的参数为NULL ,则将通知所有对象。+要从对象中删除所有样式,请使用 ​**lv_obj_reset_style_list(obj,​ part)** 
 + 
 +如果修改对象已经使用的样式,则使用**lv_obj_refresh_style(obj)** 刷新每个对象使用的样式,或者使用**lv_obj_report_style_mod(&​style)**用给定样式刷新受影响的对象。如果**lv_obj_report_style_mod**的参数为**NULL** ,则将通知所有对象。
   * **2.6组**   * **2.6组**
-一旦使用lv_group_add_obj(group,​ obj)将一个对象添加到组中,则可以使用lv_obj_get_group(obj)来获取该对象的当前组。 +一旦使用**lv_group_add_obj(group,​ obj)**将一个对象添加到组中,则可以使用**lv_obj_get_group(obj)**来获取该对象的当前组。 
-函数lv_obj_is_focused(obj)可以知道该对象当前是否在其组上。如果该对象未添加到组中,则返回false。+ 
 +函数**lv_obj_is_focused(obj)**可以知道该对象当前是否在其组上。如果该对象未添加到组中,则返回**false**
icore4tlvgl_5.1606898858.txt.gz · 最后更改: 2020/12/02 16:47 由 zgf