硬汉嵌入式论坛

 找回密码
 立即注册
查看: 269|回复: 4
收起左侧

[LVGL] 请教下, 怎么使用chart控件生成平滑曲线图

[复制链接]

1

主题

0

回帖

3

积分

新手上路

积分
3
发表于 2025-4-27 10:46:55 | 显示全部楼层 |阅读模式
chart默认是生成折线图,怎么生成平滑曲线,使用lv_bezier3函数只能使用4个控制点,我想要多个点生成
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115723
QQ
发表于 2025-4-28 09:50:36 | 显示全部楼层
帮顶。
回复

使用道具 举报

6

主题

82

回帖

100

积分

初级会员

积分
100
发表于 2025-4-28 15:09:53 | 显示全部楼层
V9还是V8,建议去LVGL的github和官方论坛问下
回复

使用道具 举报

5

主题

244

回帖

259

积分

高级会员

积分
259
发表于 2025-4-30 12:00:35 | 显示全部楼层
本帖最后由 DX3906 于 2025-4-30 12:01 编辑

1
回复

使用道具 举报

3

主题

52

回帖

61

积分

初级会员

积分
61
发表于 2025-4-30 15:06:37 | 显示全部楼层
[C] 纯文本查看 复制代码
void create_interface(lv_obj_t *parent)
{
    cont = app_interface_management_create_page_parent_cont(parent);

    // 创建图表
    lv_obj_t *chart = lv_chart_create(cont);
    app_im_init_obj(chart, LV_OPA_0, 0x00000000);
    lv_obj_set_size(chart, 560, 170);
    lv_obj_set_pos(chart, 0, 0);

    // 设置图表类型为线型图表
    lv_chart_set_type(chart, LV_CHART_TYPE_LINE);
    
    // 设置点数为容器宽度,确保每个像素都有值
    lv_chart_set_point_count(chart, 560);
    
    // 设置Y轴范围
    lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, -85, 85);
    
    // 设置网格
    lv_chart_set_div_line_count(chart, 0, 0);
    
    // 添加数据系列
    lv_chart_series_t *ser = lv_chart_add_series(chart, lv_color_make(0, 150, 255), LV_CHART_AXIS_PRIMARY_Y);
    
    // 生成正弦曲线数据
    for(int i = 0; i < 560; i++) {
        // 计算正弦值,将i映射到0-2π的范围内
        float angle = (float)i * 2 * 3.14159f / 140.0f;  // 4个完整周期
        int32_t value = (int32_t)(80 * sin(angle));  // 振幅为80
        ser->y_points[i] = value;
    }

    // 刷新图表
    lv_chart_refresh(chart);
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-14 12:35 , Processed in 0.212573 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表