Label控件
以下是自己对着正点原子出的教程敲的代码
所有的细节都在代码中注释了,可能还有没有注意到的
/*
当前文件所完成的功能
1) 创建label标签对象
2) 设置Label对象坐标
3) 使能并绘制Label对象背景
4) 设置Label的样式
5) 设置Label的动态文本
6) 设置Label的静态文本
7) 使能并设置长文本模式(6种模式)
8) 设置文本对齐方式
9) 设置文本的重绘色功能
10) 在已有文本中插入文本(任意位置 对于文本末尾有宏直接获取)
*/
#include "DSP2_2.h"
lv_obj_t * Screen2;
lv_obj_t * Label1;
char name[] = {"I am Lesterbor"};
void test2_start(void){
//创建一个屏幕对象
Screen2 = lv_scr_act();
//创建一个label控件对象背景色为透明
Label1 = lv_label_create(Screen2,NULL);
//设置Label1的坐标
lv_obj_set_pos(Label1,50,50);
//使能Label1绘制背景
lv_label_set_body_draw(Label1,true);
//设置Label1的样式(背景选择默认样式)
lv_label_set_style(Label1,LV_LABEL_STYLE_MAIN,&lv_style_plain_color);
//设置Label的动态文本
lv_label_set_text(Label1,"Hello I am \n Lesterbor ");
/*设置Label1的数组文本(数组是前面的全局变量name)*/
//lv_label_set_array_text(Label1,name,sizeof(name));
/*设置静态文本*/
//lv_label_set_static_text(Label1,"I am Lesterbor");
/*使能并设置长文本模式(无法使用lv_obj_set_size设置大小)*/
/*
LV_LABEL_LONG_EXPAND模式
字符宽自适应
不具有自动换行功能
*/
//lv_label_set_long_mode(Label1,LV_LABEL_LONG_EXPAND);
//lv_label_set_static_text(Label1,"I am Lesterbor\nMSZ");
/*
LV_LABEL_LONG_BREAK模式
以自动换行(lv_obj_set_size设置大小只能设置横向宽度超过宽度自动换行)
自己使用强制换行也是可以的
*/
//lv_label_set_long_mode(Label1,LV_LABEL_LONG_BREAK);
//大小设置必须在设置LV_LABEL_LONG_BREAK模式的后面
//lv_obj_set_width(Label1,100);
//lv_label_set_static_text(Label1,"I am Lesterbor MSZ");
/*
LV_LABEL_LONG_DOT模式
当使用此模式时lv_obj_set_size设置的宽和高都是有效的
当超过设置的宽和高时会显示...
同时具有自动换行功能
注意在此模式下不能使用设置静态文本这个接口
末尾的三个...的数量是可以通过修改宏定义而生效的
LV_LABEL_DOT_NUM = 3
*/
//lv_label_set_long_mode(Label1,LV_LABEL_LONG_DOT);
//lv_obj_set_size(Label1,100,50);
//lv_label_set_text(Label1,"I am Lesterbor,he is handsome");
/*
LV_LABEL_LONG_SROLL模式(前后滚动)
当使用此模式时会触发文本前后滚动(先向前滚动到文本末端之后向后滚动)
lv_obj_set_size设置的宽和高都是有效的
不具有自动换行功能
可以设置移动速度
在lv_conf.h文件中的385行也可以通过API接口来设置lv_label_set_anim_speed
对于下面的环形滚动也适用
*/
//lv_label_set_long_mode(Label1,LV_LABEL_LONG_SROLL);
//lv_obj_set_width(Label1,100);
lv_obj_set_size(Label1,50,16);
//lv_label_set_anim_speed(Label1,LV_LABEL_DEF_SCROLL_SPEED*3);
//lv_label_set_text(Label1,"I am Lesterbor,he is handsome");
/*
LV_LABEL_LONG_SROLL_CIRC模式(环形滚动)
一直向前滚动到文本末端之后重新开始显示文本首端
lv_obj_set_size设置的宽和高都是有效的
不具有自动换行功能
*/
//lv_label_set_long_mode(Label1,LV_LABEL_LONG_SROLL_CIRC);
//lv_obj_set_width(Label1,100);
lv_obj_set_size(Label1,50,16);
//lv_label_set_text(Label1,"I am Lesterbor,he is handsome");
/*
LV_LABEL_LONG_CROP模式
若超出Label框的大小直接剪切掉多余的文本
lv_obj_set_size设置的宽和高都是有效的
不具有自动换行功能
*/
//lv_label_set_long_mode(Label1,LV_LABEL_LONG_CROP);
//lv_obj_set_width(Label1,100);
lv_obj_set_size(Label1,50,16);
//lv_label_set_text(Label1,"I am Lesterbor,he is handsome");
//设置文本对齐方式(只能是水平方向)
//不能设置为LV_LABEL_LONG_EXPAND因为其设置不了label宽度
//lv_label_set_long_mode(Label1,LV_LABEL_LONG_CROP);
//lv_obj_set_width(Label1,200);
//lv_label_set_align(Label1,LV_LABEL_ALIGN_CENTER);
//lv_label_set_text(Label1,"I am Lesterbor");
//设置文本的重绘色功能
//需要用##包起来
//lv_label_set_long_mode(Label1,LV_LABEL_LONG_CROP);
//lv_obj_set_width(Label1,300);
//lv_label_set_recolor(Label1,true);
//lv_label_set_text(Label1,"#ff0000 I# #00ff00 am# #0000ff Lesterbor#");
//在已有文本中插入文本
//lv_label_set_text(Label1,"I ambor");
//lv_label_ins_text(Label1,4," Lester");
//在末尾插入文本
//lv_label_ins_text(Label1,LV_LABEL_POS_LAST,",he is handsome");
//剪切文本(此处将handsome剪切掉了 20开始坐标 9剪切长度)
//lv_label_cut_text(Label1,20,9);
}