定义变量
static lv_obj_t * chart;
static lv_chart_series_t * ser;
static lv_chart_cursor_t * cursor;
事件处理函数
static void event_cb(lv_event_t* e)
{
static int32_t last_id = -1;
lv_event_code_t code = lv_event_get_code(e); //获取事件码
lv_obj_t* obj = lv_event_get_target(e); // 获取产生事件的对象
if (code == LV_EVENT_VALUE_CHANGED) { // 值已改变事件处理
last_id = lv_chart_get_pressed_point(obj); //获取点击对应的线点id
if (last_id != LV_CHART_POINT_NONE) { // 不是CHART点
lv_chart_set_cursor_point(obj, cursor, NULL, last_id); //设置id对应的CHART上的点的光标线显示
}
}
else if (code == LV_EVENT_DRAW_PART_END) { // LV_EVENT_DRAW_PART_END事件处理
lv_obj_draw_part_dsc_t* dsc = lv_event_get_draw_part_dsc(e); // 获取绘制描朴述符
if (!lv_obj_draw_part_check_type(dsc, &lv_chart_class, LV_CHART_DRAW_PART_CURSOR)) return; // LV_CHART_DRAW_PART_CURSOR绘制事件处理
if (dsc->p1 == NULL || dsc->p2 == NULL || dsc->p1->y != dsc->p2->y || last_id p1->y - 5;
a.y1 = a.y2 - size.y - 10;
a.x1 = dsc->p1->x + 10;
a.x2 = a.x1 + size.x + 10;
lv_draw_rect_dsc_t draw_rect_dsc;
lv_draw_rect_dsc_init(&draw_rect_dsc);
draw_rect_dsc.bg_color = lv_palette_main(LV_PALETTE_BLUE); //蓝色背景
draw_rect_dsc.radius = 3; // 圆角半径大小为3
lv_draw_rect(dsc->draw_ctx, &draw_rect_dsc, &a); //绘制矩形框
lv_draw_label_dsc_t draw_label_dsc;
lv_draw_label_dsc_init(&draw_label_dsc);
draw_label_dsc.color = lv_color_white(); //白色字体
a.x1 += 5;
a.x2 -= 5;
a.y1 += 5;
a.y2 -= 5;
lv_draw_label(dsc->draw_ctx, &draw_label_dsc, &a, buf, NULL); //绘制文本内容
}
}
创建CHART
/**
* Show cursor on the clicked point
*/
static void lv_example_chart_6(void)
{
chart = lv_chart_create(lv_scr_act()); //创建CHART对象
lv_obj_set_size(chart, 200, 150); // 设置大小
lv_obj_align(chart, LV_ALIGN_CENTER, 0, -10); // 居中偏移0,-10对齐
lv_chart_set_axis_tick(chart, LV_CHART_AXIS_PRIMARY_Y, 10, 5, 6, 5, true, 40);//设置Y轴tick显示
lv_chart_set_axis_tick(chart, LV_CHART_AXIS_PRIMARY_X, 10, 5, 10, 1, true, 30);// 设置X轴tick显示
lv_obj_add_event_cb(chart, event_cb, LV_EVENT_ALL, NULL); //添加所有事件
lv_obj_refresh_ext_draw_size(chart); // 调用该对象的祖先事件处理程序来刷新扩展绘制大小的值
cursor = lv_chart_add_cursor(chart, lv_palette_main(LV_PALETTE_BLUE), LV_DIR_LEFT | LV_DIR_BOTTOM); //CHART添加光标,光标方向LV_DIR_LEFT和LV_DIR_BOTTOM
ser = lv_chart_add_series(chart, lv_palette_main(LV_PALETTE_RED), LV_CHART_AXIS_PRIMARY_Y); //创建添加红色ser到CHART
uint32_t i;
for (i = 0; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?