第 9 章
嵌入式 Linux 用户图形界面编
程
9.1 Linux 图形开发基础
本节在介绍图形用户界面一般构架的基础上,详细讨论嵌入式图形用户界面开发
常见的底层支持库和高级函数库。这些内容都是 Linux 图形界面开发的基础知识。
GUI 的一般架构
图形用户界面 GUI ( Graphics User Interface )是迄今为止计算机系统中最
为成熟的人机交互技术。一个好的图形用户界面的设计不仅要考虑到具体硬件
环境的限制,而且还要考虑到用户的喜好等。
由于图形用户界面的引入主要是从用户角度出发的,因此用户自身的主观感
受对图形用户界面的评价占了很大比重,比如,易用性、直观性、友好性,等
等。另外,从纯技术的角度看,仍然也会有一些标准需要考虑,比如,跨平台
性、对硬件的要求等。在嵌入式系统开发和应用中,我们所考虑的问题主要集
中在图形用户界面对硬件的要求,以及对硬件类型的敏感性方面,在提供给用
户的最终界面方面只是要求简单实用就够了。
虽然不同的 GUI 系统因为其使用场合或服务目的不同,具体实现互有差异,
但是总结起来,一般在逻辑上可以分为以下几个模块:底层 I/O 设备驱动(显示
设备驱动、鼠标驱动、键盘驱动等)、基本图形引擎(画点、画线、区域填
充)、消息驱动机制、高层图形引擎(画窗口、画按钮),以及 GUI 应用程序
接口( API )。
底层 I/O 设备驱动,例如,显示驱动、鼠标驱动、键盘驱动等构成了 GUI 的硬
件基础。由于此类设备的多样性,需要对其进行抽象,并提供给上层一个统一的调用
接口;而各类设备驱动则自成一体,形成一个 GUI 设备管理模块。当然,从操作系统
内核的角度看, GUI 设备管理模块则是操作系统内核的 I/O 设备管理的一部分。
基本图形引擎模块完成一些基本的图形操作,如画点、画线、区域填充等。它
直接和底层 I/O 设备打交道,同时,多线程或者多进程机制的引入也为基本图形模块
的实现提供了很大的灵活性。
消息不仅是底层 I/O 硬件和 GUI 上层进行交互的基础,同时也是各类 GUI 组件
如窗口、按钮等相互作用的重要途径。一个 GUI 系统的消息驱动机制的效率对该系统
的性能,尤其是对响应速度等性能的影响很大。
高级图形引擎模块则在消息传递机制和基本图形引擎的基础上完成对诸如窗口、
按钮等的管理。
GUI API 则是提供给最终程序员的编程接口,使得他们能够利用 GUI 体系所提
供的 GUI 高级功能快速开发 GUI 应用程序。
另外,为了实现 GUI 系统,一般需要用到操作系统内核提供的功能,如线程机制、
进程管理。当然,不可避免地需要用到内存管理、 I/O 设备管理,甚至还可能有文件
管理。
从用户的观点来看,图形用户界面( GUI )是系统的一个至关重要的方面:由于用
户通过 GUI 与系统进行交互,所以 GUI 应该易于使用并且非常可靠。此外,它不能占
用太多的内存,以便在内存受限的微型嵌入式设备上无缝执行。由此可见,它应该是
轻量级的,并且能够快速装入。