LVGL v8 弧形文本(arctext / curvetext)
SiFli SDK 在 LVGL v8 上提供了弧形文本(Arc Text)显示能力,对应 SDK 头文件为 lvsf_curvetext.h(控件类名为 lvsfcurve)。它在 lv_canvas 之上把字符沿圆弧排列绘制,支持设置文本沿圆弧的角度、半径,以及绘制圆弧背景线,常用于手表表盘边缘、环形菜单标题等弧形文字排版场景。
备注
solution 文档中使用的 lv_arctext_* 接口与当前 SDK v8 头文件 lvsf_curvetext.h 中的 lv_lvsfcurve_* 命名不同。本文 API 表格以 SDK 头文件为准;lv_arctext_* 相关的对齐、等间距、镜像等功能描述可作为设计参考。
功能简介
把文本沿圆弧排列绘制,支持指定起始角度与半径。
支持绘制圆弧背景线(半径、起止角度、颜色、线宽)。
支持设置旋转中心点(pivot)。
依赖 LVGL canvas(
LV_USE_CANVAS)作为绘制后端。
使用场景
手表表盘外圈环绕文字。
环形菜单 / 圆形控件边缘的标题文字。
需要文字沿圆弧排列、配合圆弧刻度线的界面。
支持的开发板
通用 LVGL v8 例程支持的平台,55x 之后的开发板均可使用(如 58x、56x、52x)。需在 lv_conf.h 中启用 LV_USE_CANVAS,并在 menuconfig 中启用 LVSF_USE_CURVE。
配置与初始化
弧形文本依赖 LVGL canvas,需先在 lv_conf.h 中开启:
LV_USE_CANVAS 1
并在 menuconfig 的 LittlevGL2RTT -> SiFli extend 中启用 LVSF_USE_CURVE。
#include "lvsf/lvsf_curvetext.h"
API 说明
以下接口签名逐字取自 middleware/lvgl/lvsf/lvsf_curvetext.h:
接口函数 |
功能说明 |
参数 / 返回值说明 |
|---|---|---|
|
创建弧形文本(curve)对象 |
|
|
设置弧形文本绘制缓冲区尺寸 |
|
|
设置旋转中心点(pivot) |
|
|
绘制圆弧背景线 |
|
|
沿圆弧绘制文本 |
|
典型用法
创建弧形文本对象、设置缓冲区与中心点,再沿圆弧绘制文字和圆弧线:
lv_obj_t *arc = lv_lvsfcurve_create(parent);
lv_obj_set_size(arc, LV_HOR_RES_MAX >> 1, LV_HOR_RES_MAX >> 1);
lv_obj_center(arc);
/* 设置绘制缓冲区与旋转中心 */
lv_lvsfcurve_set_buf(arc, LV_HOR_RES_MAX >> 1, LV_HOR_RES_MAX >> 1);
lv_lvsfcurve_set_pivot(arc, LV_HOR_RES_MAX >> 2, LV_HOR_RES_MAX >> 2);
/* 沿圆弧绘制文字:从 0 度方向开始,半径 80,白色 */
lv_lvsfcurve_text(arc, "ARCTEXT", 0, 80, LV_COLOR_WHITE, 20);
/* 绘制一条圆弧背景线 */
lv_lvsfcurve_draw_arc(arc, 80, 0, 360, LV_COLOR_BLUE, 2);
效果展示
参考文档
源码路径:
middleware/lvgl/lvsf/lvsf_curvetext.h