LVGL lv_arc弧形(12)

lv_arc

lv_arc,3点方向为0度,6点方向为90度,总共范围0~360度,相关API在lv_arc.h

圆弧类型

enum {
    LV_ARC_TYPE_NORMAL,
    LV_ARC_TYPE_SYMMETRIC,
    LV_ARC_TYPE_REVERSE
};
typedef uint8_t lv_arc_type_t;

样式

有3部分样式

/*Parts of the arc*/
enum {
    LV_ARC_PART_BG = LV_OBJ_PART_MAIN,
    LV_ARC_PART_INDIC,
    LV_ARC_PART_KNOB,
    _LV_ARC_PART_VIRTUAL_LAST,
    _LV_ARC_PART_REAL_LAST = _LV_OBJ_PART_REAL_LAST,
};
typedef uint8_t lv_arc_part_t;

例子

static void arc_event_handler(lv_obj_t * obj, lv_event_t event)
{
	int angle = 0;
	if (event == LV_EVENT_CLICKED) {
		printf("arc Clicked\n");
	}
	else if (event == LV_EVENT_VALUE_CHANGED) {				// 角度改变事件,手触摸/拖动进度条
		angle = lv_arc_get_angle_end(obj);					// 获取事件对象改变的角度
		static char buf[8];
		lv_snprintf(buf, sizeof(buf), "Arc %d", angle);		// 将值变为字符串
		lv_obj_t * label = lv_obj_get_child(obj, NULL);		// 获取事件对象的标签子对象
		lv_label_set_text(label, buf);						// 设置标签文本
		lv_obj_align(label, obj, LV_ALIGN_CENTER, 0, 0);	// 标签文件有改变要重新设置对齐
		printf("Value_Changed:%d\n", angle);
	}
}
void arc_test()
{
	static lv_style_t angles_style;
	lv_style_init(&angles_style);
	lv_style_set_line_color(&angles_style, LV_STATE_DEFAULT, LV_COLOR_RED);

	// 创建一个Arc
	lv_obj_t * arc = lv_arc_create(lv_scr_act(), NULL);
	/*设置前景起始角度*/
	//lv_arc_set_start_angle(arc, 135);
	//lv_arc_set_end_angle(arc, 45);
	lv_arc_set_angles(arc, 135, 45);
	/*设置背景起始角度*/
	//lv_arc_set_bg_start_angle(arc, 135);
	//lv_arc_set_bg_end_angle(arc, 45);	
	lv_arc_set_bg_angles(arc, 135, 45);
	/*设置大小*/
	lv_obj_set_size(arc, 150, 150);
	lv_obj_align(arc, NULL, LV_ALIGN_CENTER, 0, 0);

	/*设置控件可触摸调整结束角度*/
	lv_arc_set_adjustable(arc, true);

	lv_obj_t * label = lv_label_create(arc, NULL);		// 在Arc控件上创建一个标签
	lv_obj_align(label, arc, LV_ALIGN_CENTER, 0, 0);
	lv_label_set_text(label, "Arc");

	lv_obj_add_style(arc, LV_ARC_PART_INDIC, &angles_style);

	/*arc注册事件回调*/
	lv_obj_set_event_cb(arc, arc_event_handler);
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值