找回密码
 立即注册
首页 业界区 科技 LVGL-画布

LVGL-画布

靛尊 2025-6-10 10:35:51
LV_CANVAS_BUF_SIZE_TRUE_COLOR

可以计算画布的大小
  1. LV_CANVAS_BUF_SIZE_TRUE_COLOR(CANVAS_WIDTH, CANVAS_HEIGHT)
  2. //CANVAS_WIDTH:画布的宽
  3. //CANVAS_HEIGHT:画布的高
  4. static lv_color_t cbuf[LV_CANVAS_BUF_SIZE_TRUE_COLOR(CANVAS_WIDTH, CANVAS_HEIGHT)];//存储画布大小的缓冲区,不能是局部变量
复制代码
lv_canvas_create函数

函数用于创建一个画布(Canvas)对象
  1. lv_obj_t *lv_canvas_create(lv_obj_t *parent);
  2. //parent:画布的父对象
  3. //ret:指向新创建的画布对象的指针
复制代码
lv_canvas_set_buffer函数

用于为画布(Canvas)设置缓冲区
  1. void lv_canvas_set_buffer(lv_obj_t * obj, void * buf, int32_t w, int32_t h, lv_color_format_t cf);
  2. //obj:指向画布对象的指针
  3. //w:画布的宽度
  4. //h:画布的高度
  5. //cf:颜色格式:LV_IMG_CF_INDEXED_1BIT LV_IMG_CF_TRUE_COLOR LV_IMG_CF_INDEXED_2BIT
复制代码
lv_canvas_set_palette函数

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

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

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

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

用于将像素数组复制到画布的函数
  1. 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);
  2. //canvas:指向画布对象的指针
  3. //to_copy:要复制的像素数组
  4. //x:目标位置的左边界
  5. //y:目标位置的上边界
  6. //w:要复制的宽度
  7. //h:要复制的高度
复制代码
lv_canvas_draw_rect函数

用于在画布上绘制矩形的函数
  1. 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);
  2. //canvas:指向画布对象的指针
  3. //x:矩形左上角的 x 坐标
  4. //y:矩形左上角的y 坐标
  5. //w:矩形的宽度
  6. //h:矩形的高度
  7. //draw_dsc:指向 lv_draw_rect_dsc_t 结构体的指针,该结构体包含绘制矩形所需的样式和参数。
复制代码
lv_draw_rect_dsc_init函数

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

用于在画布上绘制文本的函数
  1. 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);
  2. //canvas:指向画布对象的指针
  3. //x:文本的左上角 x 坐标
  4. //y:文本的左上角 y 坐标
  5. //max_w:文本的最大宽度。如果文本超出此宽度,将会自动换行
  6. //draw_dsc:指向 lv_draw_label_dsc_t 结构体的指针,该结构体用于描述文本的绘制样式
  7. //txt:要绘制的文本字符串
  8. /*
  9. color        文本颜色,指定文本的前景颜色
  10. font        字体,指定文本使用的字体
  11. text        文本内容,指向要绘制的文本字符串
  12. align        文本对齐方式,如 LV_TEXT_ALIGN_LEFT、LV_TEXT_ALIGN_CENTER 等。
  13. letter_space        字间距,指定字符之间的额外间距
  14. line_space        行间距,指定行与行之间的额外间距
  15. sel_start        选择区域的起始位置,用于高亮显示文本的一部分
  16. sel_end        选择区域的结束位置
  17. sel_color        选择区域的颜色,用于高亮显示文本的一部分
  18. sel_bg_color        选择区域的背景颜色
  19. sel_bg_opa        选择区域背景的透明度
  20. angle        文本旋转角度,用于绘制旋转文本
  21. */
复制代码
lv_canvas_draw_img函数

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

用于在画布上绘制直线的函数
  1. 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);
  2. //canvas:指向画布对象的指针
  3. //points:指向 lv_point_t 数组的指针,该数组包含直线的起点和终点坐标
  4. //point_num:点的数量,通常为 2(表示起点和终点)
  5. //draw_dsc:指向 lv_draw_line_dsc_t 结构体的指针,该结构体用于描述直线的绘制样式
  6. /*
  7. lv_draw_line_dsc_t 结构体
  8. lv_draw_line_dsc_t 是 LVGL 中用于描述直线绘制样式的结构体,包含以下成员:
  9. color:直线的颜色。
  10. width:直线的宽度。
  11. opa:直线的透明度。
  12. rounded:是否绘制圆角直线。
  13. */
复制代码
lv_canvas_draw_polygon函数

用于在画布上绘制多边形的函数
  1. 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);
  2. //canvas:指向画布对象的指针
  3. //points:指向 lv_point_t 数组的指针,该数组包含多边形的顶点坐标
  4. //point_cnt:顶点的数量
  5. //draw_dsc:指向 lv_draw_line_dsc_t 结构体的指针,该结构体用于描述多边形的绘制样式
  6. /*
  7. lv_draw_line_dsc_t 是 LVGL 中用于描述线条绘制样式的结构体,包含以下成员:
  8. color:线条的颜色。
  9. width:线条的宽度。
  10. opa:线条的透明度。
  11. rounded:是否绘制圆角线条。
  12. */
复制代码
lv_canvas_draw_arc函数

用于在画布上绘制圆弧或圆形的函数
  1. 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);
  2. //canvas:指向画布对象的指针
  3. //center:圆弧的中心点坐标,类型为 lv_point_t
  4. //radius:圆弧的半径
  5. //start_angle:圆弧的起始角度,单位为度
  6. //end_angle:圆弧的结束角度,单位为度
  7. //draw_dsc:指向 lv_draw_line_dsc_t 结构体的指针,该结构体用于描述圆弧的绘制样式
  8. /*
  9. lv_draw_line_dsc_t 是 LVGL 中用于描述线条绘制样式的结构体,包含以下成员:
  10. color:线条的颜色。
  11. width:线条的宽度。
  12. opa:线条的透明度。
  13. rounded:是否绘制圆角线条
  14. */
复制代码
lv_canvas_transform函数

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

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

用于对画布的指定区域应用垂直模糊效果的函数
  1. void lv_canvas_blur_ver(lv_obj_t * canvas, const lv_area_t * area, uint16_t r);
  2. //canvas:指向画布对象的指针
  3. //area:指向 lv_area_t 结构体的指针,该结构体定义了要模糊的区域。如果为 NULL,则对整个画布应用模糊效果
  4. //r:模糊的半径,值越大表示模糊效果越强
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册