当前位置: 首页 > news >正文

2、在LVGL模拟器中了解部件的基础属性

1、基础部件

void my_gui(void)
{lv_obj_t *obj=lv_obj_create(lv_scr_act());
}

 

3、部件的基础属性

        3.1 大小(size)

        设置宽度:lv_obj_set_width(obj,new_width);

        设置高度:lv_obj_set_height(obj,new_height);

        同时设置宽度、高度:lv_obj_set_size(obj,new_width,new_height);

        3.2 位置(position)

        设置X轴坐标:lv_obj_set_x(obj, new_x);

        设置Y轴坐标:lv_obj_set_y(obj, new_y);

        同时设置X、Y轴坐标:lv_obj_set_pos(obj, new_x, new_y);

        3.3 对齐(alignment)

        对齐的模式如图所示,其中参照父对象对齐时使用OUT_XXX_XXX无效,因为子对象无法跑到父对象外面。

                1、参照父对象对齐

                        lv_obj_set_align(obj,LV_ALIGN_XXX);

                        lv_obj_align(obj,LV_ALIGN_XXX,x,y);

void my_gui(void)
{lv_obj_t *obj=lv_obj_create(lv_scr_act());// lv_obj_set_align(obj,LV_ALIGN_BOTTOM_LEFT);lv_obj_align(obj,LV_ALIGN_BOTTOM_LEFT,100,0);
}

 参照

                2、参照其他对象对齐

void my_gui(void)
{lv_obj_t *obj=lv_obj_create(lv_scr_act());//对象1lv_obj_set_size(obj,200,200);lv_obj_t *obj2=lv_obj_create(lv_scr_act());//对象2lv_obj_align_to(obj2,obj,LV_ALIGN_OUT_RIGHT_MID,0,0);
}

 

        3.4 样式(styles)(颜色的HEX值可通过截图工具获取)

        1、添加普通样式(好处是可共享,即定义的style)

void my_gui(void)
{static lv_style_t style; 									/* 定义样式变量 */lv_style_init(&style); 									/* 初始化样式 */lv_style_set_bg_color(&style, lv_color_hex(0x89d961)); 				/* 设置背景颜色 */lv_obj_t * obj = lv_obj_create(lv_scr_act()); lv_obj_add_style(obj,&style,LV_STATE_DEFAULT);
}

注意:static lv_style_t style;必须定义为静态的 

         运行效果如图

        

        2、添加本地样式 

void my_gui(void)
{lv_obj_t *obj=lv_obj_create(lv_scr_act());lv_obj_set_style_bg_color(obj,lv_color_hex(0x65a8fa),LV_STATE_DEFAULT);
}

        运行效果

边框

void my_gui(void)
{lv_obj_t *obj=lv_obj_create(lv_scr_act());lv_obj_align(obj,LV_ALIGN_CENTER,0,0);lv_obj_set_style_border_color(obj,lv_color_hex(0x04ff50),LV_STATE_DEFAULT);//绿色lv_obj_set_style_border_width(obj,10,LV_STATE_DEFAULT);//边宽lv_obj_set_style_border_opa(obj,100,LV_STATE_DEFAULT);//边框透明度,最大值255lv_obj_set_style_bg_color(obj,lv_color_hex(0x65a8fa),LV_STATE_PRESSED);//蓝色
}

 

鼠标按下时的效果

 ​​​​​​​

轮廓

 

void my_gui(void)
{//边框lv_obj_t *obj=lv_obj_create(lv_scr_act());lv_obj_align(obj,LV_ALIGN_CENTER,0,0);lv_obj_set_style_border_color(obj,lv_color_hex(0x04ff50),LV_STATE_DEFAULT);//绿色lv_obj_set_style_border_width(obj,10,LV_STATE_DEFAULT);//边宽lv_obj_set_style_border_opa(obj,100,LV_STATE_DEFAULT);//边框透明度,最大值255lv_obj_set_style_bg_color(obj,lv_color_hex(0x65a8fa),LV_STATE_PRESSED);//蓝色//轮廓lv_obj_set_style_outline_color(obj,lv_color_hex(0xfefe00),LV_STATE_DEFAULT);//黄色lv_obj_set_style_outline_width(obj,10,LV_STATE_DEFAULT);//轮廓lv_obj_set_style_outline_opa(obj,100,LV_STATE_DEFAULT);//轮廓透明度,最大值255
}

默认及按下鼠标的效果

 

 

 进度条

void my_gui(void)
{lv_obj_t *slider=lv_slider_create(lv_scr_act());lv_obj_set_align(slider,LV_ALIGN_CENTER);lv_obj_set_style_bg_color(slider,lv_color_hex(0xfa3e0c),LV_STATE_PRESSED);//红色lv_obj_set_style_bg_color(slider,lv_color_hex(0xfa3e0c),LV_STATE_DEFAULT|LV_PART_INDICATOR);//红色
}

 

 

        3.5 事件(events)

        1、不同的事件类型共用一个事件回调函数

static void my_event_cb(lv_event_cb_t *e);void my_gui(void)
{lv_obj_t *obj=lv_obj_create(lv_scr_act());lv_obj_add_event_cb(obj,my_event_cb,LV_EVENT_CLICKED,NULL);lv_obj_add_event_cb(obj,my_event_cb,LV_EVENT_LONG_PRESSED,NULL);
}static void my_event_cb(lv_event_cb_t *e)
{lv_event_code_t code=lv_event_get_code(e);if(code==LV_EVENT_CLICKED){printf("LV_EVENT_CLICKED\n");}else if(code==LV_EVENT_LONG_PRESSED){printf("LV_EVENT_LONG_PRESSED\n");}
}

 效果如图

 2、不同的部件共用一个事件回调函数

//部件需要定义在全局,回调函数才能使用
lv_obj_t *obj;
lv_obj_t *obj2;static void my_event_cb(lv_event_cb_t *e);void my_gui(void)
{obj=lv_obj_create(lv_scr_act());lv_obj_set_align(obj,LV_ALIGN_CENTER);//obj部件在中间obj2=lv_obj_create(lv_scr_act());//obj2默认处于左上角lv_obj_add_event_cb(obj,my_event_cb,LV_EVENT_CLICKED,NULL);lv_obj_add_event_cb(obj2,my_event_cb,LV_EVENT_LONG_PRESSED,NULL);
}static void my_event_cb(lv_event_cb_t *e)
{lv_obj_t *target=lv_event_get_target(e);if(target==obj){printf("obj\n");}else if(target==obj2){printf("obj2\n");}
}

 效果如下

 

相关文章:

  • 智慧城市主要运营模式分析
  • 【后端开发】JavaEE初阶——计算机是如何工作的???
  • 常见的TTL,RS232,RS485,IIC,SPI,UART之间的联系和区别
  • YOLOv8 Flask整合问题
  • 什么是Agent智能体?
  • 2024年信息安全企业CRM选型与应用研究报告
  • 探索 Android DataBinding:实现数据与视图的完美融合
  • 中间件:maxwell、canal
  • SpinalHDL之语义(Semantic)(一)
  • Python办公自动化案例:将Excel数据批量保存到Word表格中
  • spring boot启动报错:so that it conforms to the canonical names requirements
  • 验收测试:从需求到交付的全程把控!
  • 从自身经历浅谈对于C++/Java的认识
  • HttpServletRequestWrapper这个类有什么作用?
  • 深圳锐明技术前端开发笔试题
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • java取消线程实例
  • Js基础知识(四) - js运行原理与机制
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • JS题目及答案整理
  • k8s如何管理Pod
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Lsb图片隐写
  • Lucene解析 - 基本概念
  • Material Design
  • node-glob通配符
  • React组件设计模式(一)
  • spark本地环境的搭建到运行第一个spark程序
  • Vue实战(四)登录/注册页的实现
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 看域名解析域名安全对SEO的影响
  • 如何胜任知名企业的商业数据分析师?
  • 三分钟教你同步 Visual Studio Code 设置
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 说说动画卡顿的解决方案
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • mysql面试题分组并合并列
  • ‌JavaScript 数据类型转换
  • # 安徽锐锋科技IDMS系统简介
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (¥1011)-(一千零一拾一元整)输出
  • (2.2w字)前端单元测试之Jest详解篇
  • (C++哈希表01)
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (笔记自用)LeetCode:快乐数
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (算法)区间调度问题
  • (转)菜鸟学数据库(三)——存储过程
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)