靛尊 发表于 2025-6-10 10:35:51

LVGL-画布

LV_CANVAS_BUF_SIZE_TRUE_COLOR

可以计算画布的大小
LV_CANVAS_BUF_SIZE_TRUE_COLOR(CANVAS_WIDTH, CANVAS_HEIGHT)
//CANVAS_WIDTH:画布的宽
//CANVAS_HEIGHT:画布的高
static lv_color_t cbuf;//存储画布大小的缓冲区,不能是局部变量lv_canvas_create函数

函数用于创建一个画布(Canvas)对象
lv_obj_t *lv_canvas_create(lv_obj_t *parent);
//parent:画布的父对象
//ret:指向新创建的画布对象的指针lv_canvas_set_buffer函数

用于为画布(Canvas)设置缓冲区
void lv_canvas_set_buffer(lv_obj_t * obj, void * buf, int32_t w, int32_t h, lv_color_format_t cf);
//obj:指向画布对象的指针
//w:画布的宽度
//h:画布的高度
//cf:颜色格式:LV_IMG_CF_INDEXED_1BIT LV_IMG_CF_TRUE_COLOR LV_IMG_CF_INDEXED_2BITlv_canvas_set_palette函数

用于设置画布(Canvas)调色板颜色
void lv_canvas_set_palette(lv_obj_t * obj, uint8_t id, lv_color_t c);
//obj:指向画布对象的指针
//id:调色板中颜色的索引位置。索引范围取决于颜色格式:
//c:要设置的颜色值lv_palette_main函数

用于获取预定义颜色调色板中的主颜色
lv_color_t lv_palette_main(lv_palette_t palette);
//palette:指定的颜色调色板,例如 LV_PALETTE_RED、LV_PALETTE_GREEN 等。
//ret:返回指定调色板的主颜色lv_canvas_fill_bg函数

用于填充画布背景的函数
void lv_canvas_fill_bg(lv_obj_t * canvas, lv_color_t color, lv_opa_t opa);
//canvas:指向画布对象的指针
//color:要填充的颜色值
//opa:颜色的透明度,取值范围为 LV_OPA_TRANSP(完全透明)0x00到 LV_OPA_COVER(完全不透明)0xff。LV_OPA_50lv_canvas_set_px_color函数

用于设置画布上单个像素颜色的函数。
void lv_canvas_set_px_color(lv_obj_t * canvas, uint32_t x, uint32_t y, lv_color_t color);
//canvas:指向画布对象的指针
//x:像素的水平坐标(从左到右)
//y:像素的垂直坐标(从上到下)
//color:要设置的颜色值。lv_canvas_copy_buf函数

用于将像素数组复制到画布的函数
void lv_canvas_copy_buf(lv_obj_t * canvas, const void * to_copy, lv_coord_t x, lv_coord_t y, lv_coord_t w, lv_coord_t h);
//canvas:指向画布对象的指针
//to_copy:要复制的像素数组
//x:目标位置的左边界
//y:目标位置的上边界
//w:要复制的宽度
//h:要复制的高度lv_canvas_draw_rect函数

用于在画布上绘制矩形的函数
void lv_canvas_draw_rect(lv_obj_t * canvas, int32_t x, int32_t y, int32_t w, int32_t h, const lv_draw_rect_dsc_t * draw_dsc);
//canvas:指向画布对象的指针
//x:矩形左上角的 x 坐标
//y:矩形左上角的y 坐标
//w:矩形的宽度
//h:矩形的高度
//draw_dsc:指向 lv_draw_rect_dsc_t 结构体的指针,该结构体包含绘制矩形所需的样式和参数。lv_draw_rect_dsc_init函数

用于初始化矩形绘制描述符的函数
void lv_draw_rect_dsc_init(lv_draw_rect_dsc_t * dsc);
//dsc:指向 lv_draw_rect_dsc_t 结构体的指针,该结构体用于描述矩形的绘制样式
/*结构体成员变量
bg_color        背景色,用于填充矩形区域的颜色
bg_opa        背景透明度,取值范围为 LV_OPA_TRANSP(完全透明)到 LV_OPA_COVER(完全不透明)
border_color        边框颜色,用于绘制矩形的边框
border_width        边框宽度,指定矩形边框的粗细
radius        圆角半径,指定矩形四个角的圆角半径
bg_grad_dir        背景渐变方向,例如 LV_GRAD_DIR_VER 表示垂直方向的渐变
bg_grad_stops        渐变颜色停止点数组,用于定义渐变效果
shadow_color        阴影颜色,用于绘制矩形的阴影
shadow_width        阴影宽度,指定阴影的大小
shadow_ofs_x        阴影在 x 方向的偏移量
shadow_ofs_y        阴影在 y 方向的偏移量
*/lv_canvas_draw_text函数

用于在画布上绘制文本的函数
void lv_canvas_draw_text(lv_obj_t * canvas, lv_coord_t x, lv_coord_t y, lv_coord_t max_w, lv_draw_label_dsc_t * draw_dsc, const char * txt);
//canvas:指向画布对象的指针
//x:文本的左上角 x 坐标
//y:文本的左上角 y 坐标
//max_w:文本的最大宽度。如果文本超出此宽度,将会自动换行
//draw_dsc:指向 lv_draw_label_dsc_t 结构体的指针,该结构体用于描述文本的绘制样式
//txt:要绘制的文本字符串
/*
color        文本颜色,指定文本的前景颜色
font        字体,指定文本使用的字体
text        文本内容,指向要绘制的文本字符串
align        文本对齐方式,如 LV_TEXT_ALIGN_LEFT、LV_TEXT_ALIGN_CENTER 等。
letter_space        字间距,指定字符之间的额外间距
line_space        行间距,指定行与行之间的额外间距
sel_start        选择区域的起始位置,用于高亮显示文本的一部分
sel_end        选择区域的结束位置
sel_color        选择区域的颜色,用于高亮显示文本的一部分
sel_bg_color        选择区域的背景颜色
sel_bg_opa        选择区域背景的透明度
angle        文本旋转角度,用于绘制旋转文本
*/lv_canvas_draw_img函数

用于在画布上绘制图像的函数
void lv_canvas_draw_img(lv_obj_t * canvas, lv_coord_t x, lv_coord_t y, const lv_img_dsc_t * img);
//canvas:指向画布对象的指针
//x:图像左上角的 x 坐标
//y:图像左上角的 y 坐标
//img:指向 lv_img_dsc_t 结构体的指针,该结构体包含图像的数据和属性
/*
lv_img_dsc_t 是 LVGL 中用于描述图像的结构体,包含以下成员:
header:图像的元数据,包括宽度、高度、颜色格式等。
data:图像的像素数据。
*/lv_canvas_draw_line函数

用于在画布上绘制直线的函数
void lv_canvas_draw_line(lv_obj_t * canvas, lv_point_t * points, uint32_t point_num, const lv_draw_line_dsc_t * draw_dsc);
//canvas:指向画布对象的指针
//points:指向 lv_point_t 数组的指针,该数组包含直线的起点和终点坐标
//point_num:点的数量,通常为 2(表示起点和终点)
//draw_dsc:指向 lv_draw_line_dsc_t 结构体的指针,该结构体用于描述直线的绘制样式
/*
lv_draw_line_dsc_t 结构体
lv_draw_line_dsc_t 是 LVGL 中用于描述直线绘制样式的结构体,包含以下成员:
color:直线的颜色。
width:直线的宽度。
opa:直线的透明度。
rounded:是否绘制圆角直线。
*/lv_canvas_draw_polygon函数

用于在画布上绘制多边形的函数
void lv_canvas_draw_polygon(lv_obj_t * canvas, const lv_point_t * points, uint32_t point_cnt, const lv_draw_line_dsc_t * draw_dsc);
//canvas:指向画布对象的指针
//points:指向 lv_point_t 数组的指针,该数组包含多边形的顶点坐标
//point_cnt:顶点的数量
//draw_dsc:指向 lv_draw_line_dsc_t 结构体的指针,该结构体用于描述多边形的绘制样式
/*
lv_draw_line_dsc_t 是 LVGL 中用于描述线条绘制样式的结构体,包含以下成员:
color:线条的颜色。
width:线条的宽度。
opa:线条的透明度。
rounded:是否绘制圆角线条。
*/lv_canvas_draw_arc函数

用于在画布上绘制圆弧或圆形的函数
void lv_canvas_draw_arc(lv_obj_t * canvas, lv_point_t center, uint32_t radius, int32_t start_angle, int32_t end_angle, const lv_draw_line_dsc_t * draw_dsc);
//canvas:指向画布对象的指针
//center:圆弧的中心点坐标,类型为 lv_point_t
//radius:圆弧的半径
//start_angle:圆弧的起始角度,单位为度
//end_angle:圆弧的结束角度,单位为度
//draw_dsc:指向 lv_draw_line_dsc_t 结构体的指针,该结构体用于描述圆弧的绘制样式
/*
lv_draw_line_dsc_t 是 LVGL 中用于描述线条绘制样式的结构体,包含以下成员:
color:线条的颜色。
width:线条的宽度。
opa:线条的透明度。
rounded:是否绘制圆角线条
*/lv_canvas_transform函数

用于对图像进行旋转和/或缩放的函数并将结果存储在画布上
void lv_canvas_transform(lv_obj_t * canvas, lv_img_dsc_t * img, int16_t angle, uint16_t zoom, lv_coord_t offset_x, lv_coord_t offset_y, int32_t pivot_x, int32_t pivot_y, bool antialias);
//canvas:指向画布对象的指针,用于存储变换结果
//img:指向要变换的图像描述符的指针,也可以是另一个画布的图像描述符
//angle:旋转角度(0..3600),分辨率为0.1度
//zoom:缩放因子(256表示无缩放,512表示双倍大小,128表示半大小)
//offset_x:X方向的偏移量,用于确定结果数据在目标画布上的位置
//offset_y:Y方向的偏移量,用于确定结果数据在目标画布上的位置
//pivot_x:旋转的X轴,相对于源画布。设置为 源宽度 / 2 可以围绕中心旋转
//pivot_y:旋转的Y轴,相对于源画布。设置为 源高度 / 2 可以围绕中心旋转
//antialias:是否应用抗锯齿。应用抗锯齿可以使变换效果更好,但速度较慢lv_canvas_blur_hor函数

用于对画布的指定区域应用水平模糊效果的函数
void lv_canvas_blur_hor(lv_obj_t * canvas, const lv_area_t * area, uint16_t r);
//canvas:指向画布对象的指针
//area:指向 lv_area_t 结构体的指针,该结构体定义了要模糊的区域。如果为 NULL,则对整个画布应用模糊效果
//r:模糊的半径,值越大表示模糊效果越强lv_canvas_blur_ver函数

用于对画布的指定区域应用垂直模糊效果的函数
void lv_canvas_blur_ver(lv_obj_t * canvas, const lv_area_t * area, uint16_t r);
//canvas:指向画布对象的指针
//area:指向 lv_area_t 结构体的指针,该结构体定义了要模糊的区域。如果为 NULL,则对整个画布应用模糊效果
//r:模糊的半径,值越大表示模糊效果越强
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: LVGL-画布