基础控件¶
概述¶
基础控件是 EmbeddedGUI 中最常用的 UI 元素,包括所有控件的基类 View,以及文本标签、图片、按钮、分割线等。这些控件构成了大多数嵌入式 UI 界面的基础骨架。
View (基类)¶
所有控件的基类,提供位置、大小、可见性、点击事件等通用能力。
效果展示¶
View 作为基类不单独展示,其能力通过子控件体现。
API¶
函数 |
说明 |
|---|---|
|
初始化 View |
|
设置位置 |
|
设置大小 |
|
设置可见性 |
|
获取可见性 |
|
设置是否隐藏(不占布局) |
|
设置是否启用 |
|
设置是否可点击 |
|
设置透明度 |
|
设置背景 |
|
设置点击回调 |
|
复制并覆写 |
|
设置内边距 |
|
设置统一内边距 |
|
设置外边距 |
|
设置统一外边距 |
|
标记需要重绘 |
|
请求重新布局 |
|
设置阴影效果 |
|
设置图层(需开启 EGUI_CONFIG_FUNCTION_SUPPORT_LAYER) |
|
设置是否可聚焦(需开启 EGUI_CONFIG_FUNCTION_SUPPORT_FOCUS) |
|
请求焦点 |
配置选项¶
宏 |
说明 |
|---|---|
|
启用触摸支持 |
|
启用按键支持 |
|
启用焦点支持 |
|
启用图层支持 |
|
启用阴影支持 |
|
启用调试类名 |
Label¶
单行/多行文本标签,支持字体、颜色、对齐方式设置。
效果展示¶
API¶
函数 |
说明 |
|---|---|
|
初始化 Label |
|
使用参数初始化 |
|
设置文本内容 |
|
设置字体 |
|
设置字体并自动调整高度 |
|
设置字体颜色和透明度 |
|
设置对齐方式 |
|
设置行间距 |
|
获取字符串渲染尺寸 |
参数宏¶
// 完整参数初始化
EGUI_VIEW_LABEL_PARAMS_INIT(name, x, y, w, h, text, font, color, alpha);
// 简化参数初始化(使用默认字体和白色)
EGUI_VIEW_LABEL_PARAMS_INIT_SIMPLE(name, x, y, w, h, text);
代码示例¶
static egui_view_label_t label;
EGUI_VIEW_LABEL_PARAMS_INIT(label_params, 0, 0, 200, 30,
"Label S", EGUI_CONFIG_FONT_DEFAULT, EGUI_THEME_TEXT_PRIMARY, EGUI_ALPHA_100);
void init_ui(egui_core_t *core)
{
egui_view_label_init_with_params(EGUI_VIEW_OF(&label), core, &label_params);
egui_view_label_set_align_type(EGUI_VIEW_OF(&label), EGUI_ALIGN_LEFT | EGUI_ALIGN_VCENTER);
egui_view_set_margin_all(EGUI_VIEW_OF(&label), 6);
egui_core_add_user_root_view(core, EGUI_VIEW_OF(&label));
}
Image¶
图片显示控件,支持普通模式和缩放模式,可设置图片着色。
效果展示¶
API¶
函数 |
说明 |
|---|---|
|
初始化 Image |
|
使用参数初始化 |
|
设置图片资源 |
|
设置显示模式 |
|
设置图片着色 |
参数宏¶
EGUI_VIEW_IMAGE_PARAMS_INIT(name, x, y, w, h, image);
图片类型常量¶
常量 |
说明 |
|---|---|
|
原始尺寸显示 |
|
缩放至控件大小 |
代码示例¶
static egui_view_image_t image;
extern const egui_image_std_t egui_res_image_star_rgb565_8;
EGUI_VIEW_IMAGE_PARAMS_INIT(image_params, 0, 0, 96, 96,
(egui_image_t *)&egui_res_image_star_rgb565_8);
void init_ui(egui_core_t *core)
{
egui_view_image_init_with_params(EGUI_VIEW_OF(&image), core, &image_params);
egui_view_image_set_image_type(EGUI_VIEW_OF(&image), EGUI_VIEW_IMAGE_TYPE_NORMAL);
egui_core_add_user_root_view(core, EGUI_VIEW_OF(&image));
}
Divider¶
分割线控件,用于在列表或布局中分隔内容区域。
效果展示¶
API¶
函数 |
说明 |
|---|---|
|
初始化 Divider |
|
使用参数初始化 |
|
设置分割线颜色 |
参数宏¶
EGUI_VIEW_DIVIDER_PARAMS_INIT(name, x, y, w, h, color);
代码示例¶
static egui_view_divider_t divider;
EGUI_VIEW_DIVIDER_PARAMS_INIT(divider_params, 0, 0, 168, 3, EGUI_THEME_PRIMARY);
void init_ui(egui_core_t *core)
{
egui_view_divider_init_with_params(EGUI_VIEW_OF(÷r), core, ÷r_params);
egui_view_set_margin_all(EGUI_VIEW_OF(÷r), 6);
egui_core_add_user_root_view(core, EGUI_VIEW_OF(÷r));
}
Line¶
折线/多段线控件,通过一组点坐标绘制连续线段,支持线宽和圆角端点。
效果展示¶
API¶
函数 |
说明 |
|---|---|
|
初始化 Line |
|
使用参数初始化 |
|
设置点数组 |
|
设置线宽 |
|
设置线条颜色 |
|
启用圆角端点 |
参数宏¶
EGUI_VIEW_LINE_PARAMS_INIT(name, x, y, w, h, line_width, line_color);
代码示例¶
static egui_view_line_t line;
static const egui_view_line_point_t zigzag_points[] = {
{0, 40}, {30, 0}, {60, 40}, {90, 0}, {120, 40},
};
EGUI_VIEW_LINE_PARAMS_INIT(line_params, 0, 0, 130, 50, 2, EGUI_THEME_PRIMARY);
void init_ui(egui_core_t *core)
{
egui_view_line_init_with_params(EGUI_VIEW_OF(&line), core, &line_params);
egui_view_line_set_points(EGUI_VIEW_OF(&line), zigzag_points, 5);
egui_view_line_set_use_round_cap(EGUI_VIEW_OF(&line), 1);
egui_core_add_user_root_view(core, EGUI_VIEW_OF(&line));
}