GuiLite 3.3 发布:要灵活扩展,还要简单粗暴

栏目: 软件资讯 · 发布时间: 5年前

内容简介:本次更新,解决了:定制多样化问题,并优化了软件启动速度。 定制需求: 随着开发群的日益壮大,有想法的开发者层出不穷;倒是群主太过正常,显得跟大家有点格格不入了。大家需求是这样的: 我的硬件,没有frame...

本次更新,解决了:定制多样化问题,并优化了软件启动速度。

定制需求:

随着开发群的日益壮大,有想法的开发者层出不穷;倒是群主太过正常,显得跟大家有点格格不入了。大家需求是这样的:

  1. 我的硬件,没有framebuffer(这种情况在内存较小的单片机平台很常见),但我也想用GuiLite画出漂亮流畅的效果
  2. 我需要一个可以滚动的UI效果,界面上的所有元素(窗口)可以一起上下左右滑动(例如:手机通信录)
  3. 我需要一个半透明的窗口,其中窗口的背景是半透明的,文字则是不透明的
  4. 我的硬件有2D加速功能,需要GuiLite给与支持

 软件方案:

以上任何一个要求都足以推倒原有框架,因为太过底层,一旦修改就是对基础关键部分的手术。如何用最少的代码简单粗暴的解决问题,不伤执行效率,又不伤结构,是对软件架构的一个重大考验。我们的方案如下:

  1. 对于有经验的开发者来说,这已经是旧闻了,不仅被解决了,而且已经广泛应用在单片机方案中了;为什么旧事重提,就是因为它与需求2、3、4有很大的相似性,有必要一起做个总结:从c_surface派生一个类c_surface_no_fb,主要的绘制(渲染)接口没有变,只是重新实现draw_pixel, fill_rect(重载虚函数),让其通过条用外部的画点驱动函数,进行具体画点工作,具体见display.cpp::c_surface_no_fb
  2. 从c_surface派生一个类c_surface_scroll,扩大surface的高度,宽度,使其能够绘制所有的窗口元素;混动显示的过程,就是设置x,y坐标偏移量的过程,具体见:HelloScroll/UICode/scroll.h 
  3. 从c_surface派生一个类c_surface_transparent,主要的绘制(渲染)接口没有变,但实现绘制过程中,分析颜色的alpha值,从而达到透明效果(重载虚函数),具体见:HelloTransparent/UICode/surface_transparent.h
  4. 从c_surface派生一个类c_surface_2d_acc,重新实现一下draw_pixel,fill_rect接口,在该接口里面使能硬件2D加速功能

优化需求:

  1. Linux版本的实例,看到界面的时间较慢,需要优化
  2. STM32版本,由于有调用malloc的地方,所以,在heap size不够的时候会死机,需要手动设置heap size;该操作有些麻烦,影响移植体验,建议优化

优化方案:

  1. 去掉一些不必要的同步操作,改为异步执行,保证界面第一时间呈现出来
  2. 对实例代码进行几行代码调整,用静态变量代替动态分配

开发者优秀作品展示:

 GuiLite 3.3 发布:要灵活扩展,还要简单粗暴

(硬件配置:ESP32 + ST7789 + SPI屏幕),由于GIF的原因,画面不能像真实视频那么流畅,更好的效果,可以参看qq群文件。

感谢GuiLite开发群“李子木”同学的分享!虽然这个作品中能看到GuiLite实例的影子,但视觉效果和艺术设计上面,已经完全是暴捶原作的水准了。特别是对SPI屏幕的DMA优化,让画面超出想象的流畅,绝对是SPI屏幕的优化典范。

最后,希望能看到更多优秀的作品,我们会尽力为大家提供一些技术建议,为您的超神之路贡献绵薄之力。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Two Scoops of Django

Two Scoops of Django

Daniel Greenfeld、Audrey M. Roy / CreateSpace Independent Publishing Platform / 2013-4-16 / USD 29.95

Two Scoops of Django: Best Practices For Django 1.5 is chock-full of material that will help you with your Django projects. We'll introduce you to various tips, tricks, patterns, code snippets, and......一起来看看 《Two Scoops of Django》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具