欧美1区2区3区激情无套,两个女人互添下身视频在线观看,久久av无码精品人妻系列,久久精品噜噜噜成人,末发育娇小性色xxxx

LVGL對象(Objects)

在 LVGL(Light and Versatile Graphics Library)中,對象(Object)是 UI 的基本構(gòu)建單元,幾乎所有控件(按鈕、標簽、滑塊等)都是從基礎(chǔ)對象派生出來的。理解 LVGL 中對象的結(jié)構(gòu)、創(chuàng)建與操作,是掌握 LVGL 的核心之一。

?? 一、LVGL 中的對象(lv_obj)

LVGL 中的對象是從 lv_obj_t 類型派生的,所有控件本質(zhì)上都是 lv_obj_t 的一個子類型。

?? lv_obj_t 的作用

lv_obj_t 就像一個“GUI 元素基類”,提供了:

  • 樣式(Style)
  • 坐標(位置與大?。?/li>
  • 子對象容器(父子層級結(jié)構(gòu))
  • 信號與事件處理機制(如回調(diào)函數(shù))
  • 渲染與重繪管理

?? 二、對象的分類結(jié)構(gòu)(類比繼承)

lv_obj_t
 ├── lv_btn_t     按鈕
 ├── lv_label_t   標簽
 ├── lv_slider_t  滑塊
 ├── lv_img_t     圖片
 ├── lv_canvas_t  畫布
 ├── lv_list_t    列表
 └── lv_chart_t   圖表

每個控件最終都繼承自 lv_obj_t,但通過“類型封裝 + 宏 + 函數(shù)接口”實現(xiàn)“偽面向?qū)ο蟆憋L格。

?? 三、對象的創(chuàng)建與銷毀

? 創(chuàng)建對象

lv_obj_t * obj = lv_obj_create(parent); // 創(chuàng)建一個基礎(chǔ)對象

所有對象必須掛載在父對象上,最上層的是屏幕(lv_scr_act()

示例:創(chuàng)建一個按鈕

lv_obj_t * btn = lv_btn_create(lv_scr_act());  // 在當前活動屏幕創(chuàng)建按鈕
lv_obj_set_size(btn, 100, 50);
lv_obj_align(btn, LV_ALIGN_CENTER, 0, 0);

? 刪除對象

lv_obj_del(obj);  // 刪除對象及其所有子對象

?? 四、對象的屬性設(shè)置(常用函數(shù))

設(shè)置大小

lv_obj_set_size(obj, w, h)

設(shè)置位置

lv_obj_set_pos(obj, x, y)

居中對齊

lv_obj_align(obj, LV_ALIGN_CENTER, x_off, y_off)

設(shè)置背景顏色

lv_obj_set_style_bg_color(obj, lv_color_hex(0xff0000), LV_PART_MAIN)

設(shè)置圓角

lv_obj_set_style_radius(obj, 10, LV_PART_MAIN)

設(shè)置邊框?qū)挾?/p>

lv_obj_set_style_border_width(obj, 2, LV_PART_MAIN)

?? 五、對象的層級與父子關(guān)系

LVGL 中每個對象都有一個 父對象(Parent),可以嵌套形成 樹狀結(jié)構(gòu)。

lv_scr_act()
└── 容器 container
    ├── 按鈕 button1
    └── 標簽 label1

通過父子關(guān)系自動:

  • 控制顯示區(qū)域裁剪
  • 執(zhí)行坐標變換
  • 執(zhí)行事件冒泡(例如點擊穿透)

?? 六、事件機制(事件回調(diào))

LVGL 對象支持事件機制,例如點擊、拖動、滾動等,可以注冊回調(diào)函數(shù)處理:

static void my_event_cb(lv_event_t * e) {
    lv_event_code_t code = lv_event_get_code(e);
    lv_obj_t * obj = lv_event_get_target(e);
    if(code == LV_EVENT_CLICKED) {
        printf("Button clicked!\n");
    }
}

lv_obj_add_event_cb(btn, my_event_cb, LV_EVENT_ALL, NULL);

事件枚舉值示例:

  • LV_EVENT_CLICKED:點擊
  • LV_EVENT_PRESSED:按下
  • LV_EVENT_RELEASED:松開
  • LV_EVENT_DRAW_MAIN:繪制時觸發(fā)

?? 七、樣式系統(tǒng)(Style)

對象通過樣式系統(tǒng)控制外觀,包括顏色、字體、邊框、圓角等:

static lv_style_t style;
lv_style_init(&style);
lv_style_set_bg_color(&style, lv_color_hex(0xff0000));

lv_obj_add_style(obj, &style, LV_PART_MAIN);

支持多個部件(Part)和狀態(tài)(State):

  • LV_PART_MAIN:主區(qū)域
  • LV_STATE_PRESSED:按下狀態(tài)
  • LV_STATE_DISABLED:禁用狀態(tài)

?? 八、容器對象(布局)

  • lv_obj_create() 可以作為通用容器
  • 可設(shè)置布局和子對象自動排布

示例:垂直布局容器

lv_obj_t * cont = lv_obj_create(lv_scr_act());
lv_obj_set_layout(cont, LV_LAYOUT_COLUMN_MID);  // 子對象垂直居中排列

?? 總結(jié)(關(guān)鍵詞串講)

基類

lv_obj_t

創(chuàng)建

lv_obj_create()

屬性設(shè)置

lv_obj_set_...()

父子關(guān)系

parent

、

child

樣式系統(tǒng)

lv_style_t

lv_obj_add_style()

事件回調(diào)

lv_obj_add_event_cb()

層級結(jié)構(gòu)

樹狀結(jié)構(gòu)管理 UI

自動布局

lv_obj_set_layout()

LVGL保姆級教程 文章被收錄于專欄

本專欄專為嵌入式開發(fā)者打造,帶你從零開始系統(tǒng)掌握 LVGL 圖形庫。內(nèi)容涵蓋源碼獲取、目錄結(jié)構(gòu)解析、控件使用、事件系統(tǒng)、主題樣式、屏幕適配到平臺移植。每一節(jié)圖文并茂,配套實戰(zhàn)項目與源碼講解,真正做到手把手教學,適合STM32/ESP32 等平臺用戶入門與進階。跟著學,一步到位玩轉(zhuǎn) LVGL!

全部評論

相關(guān)推薦

評論
點贊
收藏
分享

創(chuàng)作者周榜

更多
牛客網(wǎng)
??推髽I(yè)服務(wù)