LVGC簡介
light video Graphics Library
(1)純c與語言編程,將面向對象的思想植入c語言。
(2)輕量化圖形庫資源,人機交互效果好,在(ios Android QT)移植性較好,但是這些平臺對硬件要求較高
lcgc工程搭建
- 工程源碼的獲取
獲取工程結構
https://github.com/lvgl/lv_port_pc_vscode/tree/master
獲取lvgl組件庫
https://github.com/lvgl/lvgl/tree/db62f65c22811acf36b9b83da0228d7389317283
將工程架構壓縮包裝包解壓到Linux下,解壓LCGL到工程的lvgl文件夾下
- 根據README進行操作
- 工程的編譯
編程思想
使用面向對象操作,由于c語言中沒有類的蓋面,用結構體代替
lvgl中examples文件的解釋
anim:存放與動畫(Animation)相關的示例
arduino:針對 Arduino 平臺的示例
assest:資源
event:事件(Event)相關示例,像按鈕點擊、滑動等事件的監聽、處理邏輯
get_started:入門示例,適合剛接觸 LVGL 的開發者,包含最基礎的初始化、簡單控件創建等代碼,幫用戶快速搭建起基本使用框架 。
grad:漸變(Gradient)相關示例,比如顏色漸變效果在控件(如按鈕、窗口背景等)
layouts:布局(Layout)示例,介紹 LVGL 各種布局管理方式,像行列布局、對齊方式等,讓界面元素能合理排列
libs:可能存放一些輔助庫、第三方依賴庫相關的示例,或者是 LVGL 自身基礎庫功能的演示
others:其他雜項示例
porting:移植相關示例
scroll:滾動(Scroll)相關示例
styles:樣式(Style)示例
widgets:控件(Widgets,如按鈕、標簽、滑塊等 )示例,每個常用控件的創建、配置、交互邏輯等
控件基本操作
新建對象
lv_obj_t *obj = lv_obj_create(lv_screen_active());//新建一個對象,是整個屏幕作為父
// 設置寬度、高度
lv_obj_set_width(obj, new_width);
lv_obj_set_height(obj, new_height);
lv_obj_set_size(struct _lv_obj_t *obj, lv_coord_t w, lv_coord_t h)// 獲取寬度、高度
lv_obj_get_width(obj);
lv_obj_get_height(obj);// 設置x軸、y軸方向的坐標位置
lv_obj_set_x(obj, new_x);
lv_obj_set_y(ob