最近在学习GUI,初次接触这类东东,想由简单点的入手,因而拿Microchip的图形库作为入手点。在学习时,同时写了一篇源码分析笔记。放在这里,供大家参考。由于该笔记比较长,所在这里只摘录了其中的一小部分。
完整的源码分析笔记以及关于该GUI的参考资料包含在以下附件中。
模拟器
------------------------------------------------------------------------------------------------------------------------------------------
该篇学习笔记基于Microchip Graphics Library V2.0,该图形库的体系结构如图1.1。这里主要分析显示驱动层(DDL层)的设计、图形原语层的设计(GPL层)、图形目标层(GOL层)的设计。该体系结构的突出特点是采用了分层的结构设计。
图1.1 Microchip Graphic Library体系结构
底层为图形设备驱动层(DDL层),直接同硬件交互,屏蔽掉与硬件相关的细节,向上提供一些与具体设备无关的接口,主要是画点函数。往上一层是图形原语层(GPL层),它基于图形设备驱动层(DDL层)提供的接口,向上提供了更为复杂功能函数的实现,如画线、画圆。图形原语层(GPL层)之上是图形物件层(GOL层),该层基于图形设备驱动层(DDL层)的简单图形绘制函数,实现了我们常见到的诸如窗口、进度条等物件抽像,同时也提供了消息接口。最后是应用层,应用层由用户实现,在应用层中可以直接调用各层提供的接口函数,灵活性较大。
采用分层结构的设计的优点有:
1. 各模块的结构很清晰,在代码维护时较容易;发现BUG时,可容易定位到出现问题的模块,在保证各层提供的接口函数不变情况下,可直接进行相应的修改。
2. 每层的代码设计要容易得多:对于某一层而言,它仅需要知道下一层提供的是何种接口,向上提供哪些接口,并不需要知道最底层的细节;在定义好这些接口后,整个软件的各个部分可以分别交给不同的人员进行设计,最后很容易整合在一块;
3. 从硬件往上逐层提供了更为高级的抽像,同时屏蔽一些无关的细节,比较符合人的思维方式。特别是在GOL层之上,用户完全不需要知道使用的是哪种LCD控制器,他所面对的就是窗口等更为直观的物件,极大地增强了软件的易用性。当然,在该图形库中并未完全如此,应用层可直接同各层进行交互。
对于各层中的一些细节这里将不作分析,没有必要。相关的一些细节可以参考其它资料。
从我个人的观点来说,学习这个图形库的设计思路是最主要的目标;至于一些相关细节,可以查找数据手册,或者参考相关的书籍,因而就没必要深入了解。分析源码的目的是理解GUI的工作原理,在学会使用这个相对简单的GUI同时,能够触类旁通的学会使用其它的GUI。当然,如果以后有时间和有想法,写出一个比较简单的、属于自己的GUI出来,那更是我所期望的。
以下几个方面,是我在这篇文档中所关注的:
接下来的几章,将从最底层的DDL层开始,逐层向上分析。
用户432512 2012-10-15 15:39
用户1618693 2012-6-15 14:38
用户420151 2012-4-17 11:10
用户1325707 2011-11-12 11:17
用户1480107 2011-11-7 13:37
正需要這方面的資料.謝謝!!
用户1284804 2011-5-12 21:38
用户245924 2010-6-5 20:24
用户526022 2009-7-27 18:51
用户555278 2009-7-27 15:13
用户208692 2009-6-2 23:12