网络安全参考 | UNIX参考 | GPS参考 | 无线参考 | 在线手册 | OSBUG.ORG | SUNNY-NETWORK.COM
天线制作 GPS 地标
网站地图 RSS订阅
高级搜索 收藏本站
Home | 业界动态 | Open source | GNU | Linux | BSD | Solaris | AIX | HP-UX | IRIX | Mac OS X | Minix | Tru64 | SCO UNIX | Network | Security | X-Window | Database | 应用服务 | Programming | 经典著作 | 永远的纪念 | 杂项
 当前位置: Home > Linux > 嵌入式系统 > GUI > 文章  
基于 GTK+ 和 X-window 的 GUI 在嵌入式 Linux 中的应用
文章来源: IBM Developerworks 文章作者: 余涛 (yut616@21cn.com) 发布时间: 2006-12-07   字体: [ ]  
 

  要改变一个窗口的字体,你必须克隆窗口的式样,并使用X字体加载一个新的字体,类似adobe-helvetica-bold-r-normal--12-*-*-*-p-*-iso8859-1。

  但实际中会有些问题,GtkStyle是一个大的对象。如果一个屏幕上有很多种不同字体大小的多个窗口,每个都有一个唯一的GtkStyle对象,我们就会浪费大量的内存。到最后,X系统就不能支持类似字体的各种变化了。你甚至不能使X完成让某个字体变粗的操作,因为X系统是将不同外型的字体作为不同的字体的。X系统是假定你会硬编码一个希望的字体或者分析出一个字体名,改变字体及验证结果都将在字体服务器上。

  还可以使用一个更好的方法来完善字体管理系统,即包装GtkStyle,这样开发者就可以通过属性来获得一个窗口的字体,这比直接使用 X 系统字体的名字要更灵活。比如要显示一个比基本字体要大一号,并且是黑体字就可以调用:

gtk_widget_set_font_bold (widget, TRUE);
gtk_widget_set_font_enlarge (widget, 1);

  这是通过在 GtkWidget 结构中加入一个 GdkFont * font 来实现的,GtkWidget 是所有窗口类的父类。如果设置widget->font 那么就使用它,否则就使用widget->style->font。

  窗口管理

  在嵌入系统GUI中,还需要建立一个窗口管理器。我们可以选择一个开放代码的,轻量级的X管理器,Aewm。在嵌入系统中,我们会将最上层的窗口设置为获得焦点,并且只有对话框能移动,能显示其标题栏。

  窗口管理器是一个交互端,它可以管理内部与外部的应用程序的窗口。每一个应用程序的窗口,都会建立一个 socket 连接,并取一个名字。一个应用可以把请求将自己放在窗口堆栈的最下面,或者将一个命名的应用往上移。如果一个对话框要在最上层的窗口上打开,那么窗口管理器就将告诉这个最上层的窗口它将不再获得焦点,而新对话框将获得焦点。

  整体尺寸大小

  经过一系列的改进后,我们就得到了一个稳定的,功能和性能都能满足嵌入系统要求的GUI了。在ARM系统下,得到的尺寸大小为:

图1

  其中 GTK+ 里面仍然还有不需要的代码,可以将其再去除。如果再简化一下的话,GTK+ 可以做到850KB,总体大小可以到 2.8M。

  运行性能

  将修改过的 GUI 运行在一个 ARM7 的系统上,CPU 为 100MHZ,运行时的效果还不错,窗口响应用户操作的速度很迅速,新的画面创建与显示的速度都能接受。

 
推荐文章
·恰当选择嵌入式Linux环境下的GUI
·嵌入式Linux系统的MiniGUI研究和
·基于Qt/Embedded和Qtopia的GUI设
·恰当选择嵌入式Linux环境下的GUI
·嵌入式Linux系统中的GUI系统的研
·QTE/Qtopia在Liod-270上的移植
·基于Qt/Embedded的GUI移植及应用
 

 
↑返回顶部   打印本页   关闭窗口↓  

Google
 
Web oldhand.org unixreference.net meshmea.org
相关分类
热点文章
·基于Qt/Embedded的GUI移
·基于Qt/Embedded和Qtopi
·嵌入式Linux系统中的GUI
·QTE/Qtopia在Liod-270上
·Qt/Embedded在嵌入式Lin
·嵌入式Linux系统的MiniG
·恰当选择嵌入式Linux环
·恰当选择嵌入式Linux环
相关文章
·主流嵌入式Linux系统下G
·基于Qt/Embedded和Qtopi
·嵌入式uClinux的内核结
·制作基于软盘的Linux系
·基于Linux的移动电话开
·Linux下ARM/DSP双核系统
·嵌入式Linux系统的MiniG
·恰当选择嵌入式Linux环
更多...
 
 

Copyright(c) 2001-2009 OLDHAND ORGANIZATION, All Rights reserved.
Power by DedeCms 织梦内容管理系统