找回密码
 立即注册
首页 业界区 科技 LVGL-位置、大小以及样式

LVGL-位置、大小以及样式

僚娥 前天 12:03
位置

lv_obj_set_x函数

此函数用于设置 GUI 对象的 X 坐标(即水平位置)。
  1. void lv_obj_set_x(lv_obj_t * obj, lv_coord_t x);
  2. //obj:指向要设置位置的对象的指针
  3. //x:对象的新 X 坐标值。这个值是相对于对象父级的坐标系的。
复制代码
lv_obj_set_y函数

此函数用于设置 GUI 对象的 y坐标(即垂直位置)。
  1. void lv_obj_set_y(lv_obj_t * obj, lv_coord_t y);
  2. //obj:指向要设置位置的对象的指针
  3. //y:对象的新 y 坐标值。这个值是相对于对象父级的坐标系的。
复制代码
lv_obj_set_pos函数

此函数用于同时设置对象的 X 和 Y 坐标
  1. void lv_obj_set_pos(lv_obj_t * obj, lv_coord_t x, lv_coord_t y);
  2. //obj:指向要设置位置的对象的指针
  3. //x:对象的新 x 坐标值。这个值是相对于对象父级的坐标系的。
  4. //y:对象的新 y 坐标值
复制代码
lv_pct宏

用于表示百分比的一个宏。它通常用于设置对象的大小或位置时,以百分比的形式相对于父容器的尺寸来指定值
  1. #define lv_pct(x) ((x) * LV_PCT(1))
  2. //x:将输入值 x 转换为相对于父容器的百分比值
复制代码
lv_obj_set_align函数

用于将对象相对于其父容器或其他对象进行对齐
  1. void lv_obj_set_align(lv_obj_t * obj, lv_align_t align);
  2. //obj:指向要设置对齐方式的对象的指针
  3. //align:对齐方式
  4. /*
  5. LV_ALIGN_TOP_LEFT:对齐到父容器的左上角。
  6. LV_ALIGN_TOP_MID:对齐到父容器的顶部中央。
  7. LV_ALIGN_TOP_RIGHT:对齐到父容器的右上角。
  8. LV_ALIGN_BOTTOM_LEFT:对齐到父容器的左下角。
  9. LV_ALIGN_BOTTOM_MID:对齐到父容器的底部中央。
  10. LV_ALIGN_BOTTOM_RIGHT:对齐到父容器的右下角。
  11. LV_ALIGN_LEFT_MID:对齐到父容器的左侧中央。
  12. LV_ALIGN_RIGHT_MID:对齐到父容器的右侧中央。
  13. LV_ALIGN_CENTER:对齐到父容器的中心。
  14. */
复制代码
lv_obj_center函数

用于将对象居中对齐到其父容器的中心,实现对象的居中对齐
  1. void lv_obj_center(lv_obj_t * obj);
  2. //obj:指向要居中对齐的对象的指针。
复制代码
lv_obj_align函数

用于将对象相对于其父容器或其他对象进行对齐
  1. void lv_obj_align(lv_obj_t * obj, lv_align_t align, lv_coord_t x_mod, lv_coord_t y_mod);
  2. //obj:指向要设置对齐方式的对象的指针
  3. //align:对齐方式
  4. //x_mod:在对齐后,对象的 X 坐标偏移量
  5. //y_mod:在对齐后,对象的 Y 坐标偏移量
复制代码
lv_obj_align_to函数

用于将一个对象相对于另一个对象进行对齐
  1. void lv_obj_align_to(lv_obj_t * obj_to_align, const lv_obj_t * base, lv_align_t align, lv_coord_t x_ofs, lv_coord_t y_ofs);
  2. //obj_to_align:要进行对齐的对象的指针
  3. //base:作为对齐基准的对象的指针
  4. //align:对齐方式
  5. //x_ofs:对齐后在 X 轴方向上的偏移量
  6. //y_ofs:对齐后在 Y 轴方向上的偏移量
  7. /*
  8. LV_ALIGN_OUT_TOP_LEFT //将对象对齐到父容器的左上角外部。对象的右下角与父容器的左上角对齐。
  9. LV_ALIGN_OUT_TOP_MID //将对象对齐到父容器的顶部中央外部。对象的底部中央与父容器的顶部中央对齐。
  10. LV_ALIGN_OUT_TOP_RIGHT //将对象对齐到父容器的右上角外部。对象的左下角与父容器的右上角对齐。
  11. LV_ALIGN_OUT_BOTTOM_LEFT //将对象对齐到父容器的左下角外部。对象的右上角与父容器的左下角对齐。
  12. LV_ALIGN_OUT_BOTTOM_MID //将对象对齐到父容器的底部中央外部。对象的顶部中央与父容器的底部中央对齐。
  13. LV_ALIGN_OUT_BOTTOM_RIGHT//将对象对齐到父容器的右下角外部。对象的左上角与父容器的右下角对齐。
  14. LV_ALIGN_OUT_LEFT_TOP //将对象对齐到父容器的左上角外部。对象的右下角与父容器的左上角对齐(与 LV_ALIGN_OUT_TOP_LEFT 相同)。
  15. LV_ALIGN_OUT_LEFT_MID//将对象对齐到父容器的左侧中央外部。对象的右中央与父容器的左中央对齐。
  16. LV_ALIGN_OUT_LEFT_BOTTOM//将对象对齐到父容器的左下角外部。对象的右上角与父容器的左下角对齐。
  17. LV_ALIGN_OUT_RIGHT_TOP//将对象对齐到父容器的右上角外部。对象的左下角与父容器的右上角对齐(与 LV_ALIGN_OUT_TOP_RIGHT 相同)。
  18. LV_ALIGN_OUT_RIGHT_MID//将对象对齐到父容器的右侧中央外部。对象的左中央与父容器的右中央对齐。
  19. LV_ALIGN_OUT_RIGHT_BOTTOM//将对象对齐到父容器的右下角外部。对象的左上角与父容器的右下角对齐(与 LV_ALIGN_OUT_BOTTOM_RIGHT 相同)。
  20. */
复制代码
大小

lv_obj_set_width函数

用于设置对象的宽度
  1. void lv_obj_set_width(lv_obj_t * obj, lv_coord_t width);
  2. //obj:指向要设置宽度的对象的指针。
  3. //width:要设置的新宽度值,以像素为单位。
复制代码
lv_obj_set_height函数

用于设置对象的高度。
  1. void lv_obj_set_height(lv_obj_t * obj, lv_coord_t height);
  2. //obj:指向要设置高度的对象的指针。
  3. //height:要设置的新高度值,以像素为单位。
复制代码
lv_obj_set_size函数

用于同时设置对象的宽度和高度
  1. void lv_obj_set_size(lv_obj_t * obj, lv_coord_t w, lv_coord_t h);
  2. //obj:指向要设置尺寸的对象的指针。
  3. //w:要设置的新宽度值,以像素为单位
  4. //h:要设置的新高度值,以像素为单位
复制代码
lv_obj_set_content_width 函数

用于设置对象内容区域宽度的函数,而非总宽度
  1. void lv_obj_set_content_width(lv_obj_t * obj, lv_coord_t w);
  2. //obj:要设置的对象指针
  3. //w:新的内容区域宽度(像素值)
复制代码
lv_obj_set_content_height函数

用于设置对象内容区域高度的函数,而非总高度
  1. void lv_obj_set_content_height(lv_obj_t * obj, lv_coord_t h);
  2. //obj:要设置的对象指针
  3. //h:新的内容区域高度(像素值)
复制代码
lv_obj_get_width函数

用于获取对象的当前宽度
  1. lv_coord_t lv_obj_get_width(const lv_obj_t * obj);
  2. //obj:指向要获取宽度的对象的指针
  3. //ret:返回对象的当前宽度,以像素为单位
复制代码
lv_obj_get_height函数

用于获取对象的当前高度
  1. lv_coord_t lv_obj_get_height(const lv_obj_t * obj);
  2. //obj:指向要获取宽度的对象的指针
  3. //ret:返回对象的当前高度,以像素为单位
复制代码
lv_obj_get_content_width函数

用于获取对象的内容区域宽度
  1. lv_coord_t lv_obj_get_content_width(const lv_obj_t * obj);
  2. //obj:指向要获取内容区域宽度的对象的指针
  3. //ret:返回对象的内容区域宽度
复制代码
lv_obj_get_content_height函数

用于获取对象的内容区域高度
  1. lv_coord_t lv_obj_get_content_height(const lv_obj_t * obj);
  2. //obj:指向要获取内容区域高度的对象的指针
  3. //ret:返回对象的内容区域高度
复制代码
1.png

lv_obj_update_layout函数

用于强制更新对象的布局。这个函数通常在手动调整对象或其子对象的大小、位置或属性后调用
  1. void lv_obj_update_layout(lv_obj_t * obj);
  2. //obj:指向要更新布局的对象的指针。
复制代码
样式

lv_style_init函数

用于初始化一个新的样式,通过样式可以统一设置多个对象的属性,如颜色、边框、背景、字体等。
  1. static lv_style_t style;
  2. void lv_style_init(lv_style_t * style);
  3. //style:指向要初始化的样式结构的指针。
复制代码
lv_style_set_width函数

用于设置样式的宽度属性
  1. void lv_style_set_width(lv_style_t * style, lv_state_t state, lv_coord_t width);
  2. //style:指向要设置宽度的样式结构的指针
  3. //state:指定样式的状态 LV_STATE_DEFAULT LV_STATE_FOCUSED LV_STATE_PRESSED LV_STATE_CHECKED 等
  4. //width:要设置的宽度值,以像素为单位。
复制代码
lv_style_set_y函数

用于设置样式的 Y 偏移量
  1. void lv_style_set_y(lv_style_t * style, lv_state_t state, lv_coord_t y);
  2. //style:指向要设置 Y 偏移量的样式结构的指针
  3. //state:指定样式的状态 可以省略
  4. //y:要设置的 Y 偏移量
复制代码
lv_obj_add_style函数

用于将一个样式(lv_style_t)应用到对象上
  1. void lv_obj_add_style(lv_obj_t * obj, const lv_style_t * style, lv_part_t part);
  2. //obj:指向要应用样式的对象的指针。
  3. //style:指向要应用的样式结构的指针。
  4. //part:指定样式的部分 LV_PART_MAIN LV_PART_FOCUSED LV_PART_PRESSED LV_PART_CHECKED
复制代码
lv_style_set_translate_y函数

用于设置样式的垂直平移量。这个函数允许你在不改变对象大小和位置的情况下,将对象在垂直方向上平移一定的距离
  1. void lv_style_set_translate_y(lv_style_t * style, lv_coord_t value);
  2. //style:指向要设置垂直平移量的样式结构的指针
  3. //value:要设置的垂直平移量,以像素为单位。正值表示向下平移,负值表示向上平移
复制代码
lv_style_set_translate_x函数

用于设置样式的水平平移量。这个函数允许你在不改变对象大小和位置的情况下,将对象在水平方向上平移一定的距离。
  1. void lv_style_set_translate_x(lv_style_t * style, lv_state_t state, lv_coord_t x);
  2. //style:指向要设置水平平移量的样式结构的指针
  3. //state:指定样式的状态
  4. //x:要设置的水平平移量,以像素为单位。正值表示向右平移,负值表示向左平移
复制代码
lv_style_set_height函数

用于设置样式的高度属性
  1. void lv_style_set_height(lv_style_t * style, lv_state_t state, lv_coord_t height);
  2. //style:指向要设置高度的样式结构的指针
  3. //state:指定样式的状态
  4. //height:要设置的高度值,以像素为单位
复制代码
lv_style_set_width函数

用于设置样式的宽度属性
  1. void lv_style_set_width(lv_style_t * style, lv_state_t state, lv_coord_t width);
  2. //style:指向要设置宽度的样式结构的指针。
  3. //state:指定样式的状态
  4. //width:要设置的宽度值,以像素为单位
复制代码
lv_style_set_size函数

用于同时设置样式的宽度和高度属性
  1. void lv_style_set_size(lv_style_t * style, lv_state_t state, lv_coord_t size);
  2. //style:指向要设置大小的样式结构的指针
  3. //state:指定样式的状态
  4. //size:要设置的宽度和高度值
复制代码
lv_obj_remove_style函数

用于从对象中移除一个样式
  1. void lv_obj_remove_style(lv_obj_t * obj, const lv_style_t * style, lv_part_t part);
  2. //obj:指向要移除样式的对象的指针。
  3. //style:指向要移除的样式结构的指针
  4. //part:指定样式的部分
复制代码
lv_style_set_bg_color函数

设置样式的背景颜色
  1. void lv_style_set_bg_color(lv_style_t * style, lv_color_t color);
  2. //style:指向要设置背景颜色的样式结构的指针
  3. //color:要设置的背景颜色
复制代码
lv_style_set_border_width函数

设置样式的边框宽度
  1. void lv_style_set_border_width(lv_style_t * style,  lv_coord_t width);
  2. //style:指向要设置边框宽度的样式结构的指针
  3. //width:要设置的边框宽度
复制代码
lv_style_set_radius函数

设置样式的圆角半径
  1. void lv_style_set_radius(lv_style_t * style, lv_state_t state, lv_coord_t radius);
  2. //style:指向要设置圆角半径的样式结构的指针
  3. //state:指定样式的状态
  4. //radius:要设置的圆角半径,以像素为单位
复制代码
lv_style_set_transform_width函数

用于设置样式的变换宽度
  1. void lv_style_set_transform_width(lv_style_t * style, lv_state_t state, lv_coord_t value);
  2. //style:指向要设置变换宽度的样式结构的指针
  3. //state:指定样式的状态
  4. //value:要设置的变换宽度值,以像素为单位。正值表示对象在两侧变得更宽,负值表示对象在两侧变得更窄
复制代码
lv_style_set_transform_height函数

用于设置样式的变换高度
  1. void lv_style_set_transform_height(lv_style_t * style, lv_state_t state, lv_coord_t value);
  2. //style:指向要设置变换高度的样式结构的指针
  3. //state:指定样式的状态
  4. //value:要设置的变换高度值,以像素为单位。正值表示对象在上下方向上更高,负值表示对象在上下方向上更矮。
复制代码
lv_obj_add_flag函数

函数用于为对象添加一个标志
  1. void lv_obj_add_flag(lv_obj_t * obj, lv_obj_flag_t flag);
  2. //obj:指向要添加标志的对象的指针
  3. //flag:要添加的标志  可以通过位运算符 | 组合多个标志
  4. /*
  5. LV_OBJ_FLAG_HIDDEN:隐藏对象,使其在布局计算中被忽略。
  6. LV_OBJ_FLAG_CLICKABLE:使对象可点击。
  7. LV_OBJ_FLAG_CHECKABLE:使对象可选中(例如复选框)。
  8. LV_OBJ_FLAG_SCROLLABLE:使对象可滚动
  9. */
复制代码
lv_obj_clear_flag函数

函数用于清除对象的一个标志
  1. void lv_obj_clear_flag(lv_obj_t * obj, lv_obj_flag_t flag);
  2. //obj:指向要清除标志的对象的指针
  3. //flag:要清除的标志
复制代码
lv_layout_register函数

用于注册一个新的自定义布局,可以定义自己的布局逻辑,并将其应用到对象上
  1. uint32_t lv_layout_register(lv_layout_update_cb_t cb, void * user_data);
  2. //cb:布局更新回调函数的指针。这个函数将在需要重新定位或调整对象的子对象时被调用。
  3. //user_data:自定义数据,将传递给回调函数
  4. //ret:返回新布局的 ID
复制代码
  1. #include "lvgl.h"
  2. // 自定义布局更新回调函数
  3. void my_layout_update(lv_obj_t * obj, void * user_data) {
  4.     // 在这里实现你的布局逻辑
  5.     // 例如,重新定位或调整子对象的大小
  6. }
  7. void example_custom_layout() {
  8.     // 注册自定义布局
  9.     uint32_t MY_LAYOUT = lv_layout_register(my_layout_update, NULL);
  10.     // 创建一个容器并应用自定义布局
  11.     lv_obj_t * container = lv_obj_create(lv_scr_act());
  12.     lv_obj_set_size(container, 300, 200);
  13.     lv_obj_set_layout(container, MY_LAYOUT); // 应用自定义布局
  14. }
复制代码
lv_style_set_prop_meta函数

用于为样式中的特定属性设置元数据。元数据可以用于控制属性的继承或默认值等特殊行为
  1. void lv_style_set_prop_meta(lv_style_t * style, lv_style_prop_t prop, uint16_t meta);
  2. //style:指向要设置属性元数据的样式结构的指针。
  3. //prop:要设置元数据的属性 ID,例如 LV_STYLE_BG_COLOR。
  4. //meta:要设置的元数据值,可以是以下值之一:
  5. //LV_STYLE_PROP_META_INHERIT:强制子对象继承父对象的值。
  6. //LV_STYLE_PROP_META_INITIAL:强制使用属性的默认值。
复制代码
  1. #include "lvgl.h"
  2. void example_style_prop_meta() {
  3.     // 创建一个样式
  4.     static lv_style_t style;
  5.     lv_style_init(&style);
  6.     // 设置背景颜色的元数据为继承
  7.     lv_style_set_prop_meta(&style, LV_STYLE_BG_COLOR, LV_STYLE_PROP_META_INHERIT);
  8.     // 设置背景颜色的值
  9.     lv_style_set_bg_color(&style, LV_STATE_DEFAULT, lv_color_hex(0xCCCCCC));
  10.     // 创建一个对象并应用样式
  11.     lv_obj_t * obj = lv_obj_create(lv_scr_act());
  12.     lv_obj_add_style(obj, &style, LV_PART_MAIN);
  13. }
复制代码
lv_style_set_bg_color函数

设置特定状态下的对象设置背景颜色。
  1. void lv_style_set_bg_color(lv_style_t * style,  lv_color_t color);
  2. //style:指向要设置背景颜色的样式结构的指针
  3. //color:要设置的背景颜色,类型为 lv_color_t
复制代码
lv_color_hex宏

用于将十六进制颜色值转换为 lv_color_t 类型
  1. lv_style_set_bg_color(style, LV_STATE_DEFAULT, lv_color_hex32(0x80FF0000)); // 半透明红色
  2. #define lv_color_hex(color) ((lv_color_t) { .full = (color) })
复制代码
  1. #include "lvgl.h"
  2. void example_color_hex() {
  3.     // 创建一个样式
  4.     static lv_style_t style_btn;
  5.     lv_style_init(&style_btn);
  6.     // 使用 lv_color_hex 设置默认状态的背景颜色为灰色
  7.     lv_style_set_bg_color(&style_btn, LV_STATE_DEFAULT, lv_color_hex(0xCCCCCC));
  8.     // 使用 lv_color_hex 设置按下状态的背景颜色为深灰色
  9.     lv_style_set_bg_color(&style_btn, LV_STATE_PRESSED, lv_color_hex(0x888888));
  10.     // 创建一个按钮
  11.     lv_obj_t * btn = lv_btn_create(lv_scr_act());
  12.     lv_obj_set_size(btn, 100, 50); // 设置按钮的大小为 100x50 像素
  13.     lv_obj_align(btn, LV_ALIGN_CENTER, 0, 0); // 将按钮居中对齐到屏幕中心
  14.     // 将样式应用到按钮上
  15.     lv_obj_add_style(btn, &style_btn, LV_PART_MAIN);
  16.     // 创建一个标签并添加到按钮上
  17.     lv_obj_t * label = lv_label_create(btn);
  18.     lv_label_set_text(label, "按钮");
  19.     lv_obj_center(label); // 将标签居中显示在按钮上
  20. }
复制代码
lv_style_set_bg_opa函数

用于设置小部件背景的透明度
  1. void lv_style_set_bg_opa(lv_style_t * style, lv_opa_t opa);
  2. //style:指向 lv_style_t 类型的指针,表示要设置样式的对象
  3. //opa:透明度值,范围从 0 到 255
  4. //0 或 LV_OPA_0 或 LV_OPA_TRANSP 表示完全透明
  5. //255 或 LV_OPA_100 或 LV_OPA_COVER 表示完全不透明
复制代码
lv_style_set_border_width函数

用于设置小部件边框的宽度
  1. void lv_style_set_border_width(lv_style_t * style, uint8_t width);
  2. //style:指向 lv_style_t 类型的指针,表示要设置样式的对象
  3. //width:边框的宽度
复制代码
lv_style_set_border_color函数

用于设置小部件边框的颜色
  1. void lv_style_set_border_color(lv_style_t * style,  lv_color_t color);
  2. //style:指向 lv_style_t 类型的指针,表示要设置样式的对象。
  3. //color:边框的颜色,类型为 lv_color_t。可以通过 lv_color_hex
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册