 |
只有一页
Johnny
Moderator
副总版主
来自:
|
|
发帖时间 : 2006-08-27 15:24:41
 |
"跨平台的GUI库"
1.wxWidgets
http://www.wxwidgets.org/
wxWidgets lets developers create applications for Win32, Mac OS X, GTK+, X11, Motif, WinCE, and more using one codebase. It can be used from languages such as C++, Python, Perl, and C#/.NET. Unlike other cross-platform toolkits, wxWidgets applications look and feel native. This is because wxWidgets uses the platform's own native controls rather than emulating them. It's also extensive, free, open-source, and mature.
可让开发者建立跨平台(Win32, Mac OS X, GTK+, X11, Motif, WinCE)的应用程序
可以使用 C++, Python, Perl, C#/.Net 开发
不像其他跨平台的 工具,wxWidgets应用程序 的外观look和feel都是native的。
这是因为wxWidgets使用的是平台自己的native controls而不是模拟他们。
在gtk下就是
libwxbase2.6-0
libwxgtk2.6-0
著名的程序
aMule= all the platform Mule
使用wxGTK2.6
wxGTK 2.4,使用 GTK+ 1.0, 界面不好看,而且不支持unicode
并且有时候会乱码
执行:
sudo ln -s /etc/gtk/gtkrc.zh_CN /etc/gtk/gtkrc.zh_CN.utf-8
如果不存在 /etc/gtk/gtkrc.zh_CN 这个文件,就直接建立 /etc/gtk/gtkrc.zh_CN.utf-8
sudo gedit /etc/gtk/gtkrc.zh_CN.utf-8
内容如下:
style "gtk-default-zh-cn" {
fontset = "-adobe-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
-*-*-medium-r-normal--16-*-*-*-*-*-gb2312.1980-0,*-r-*"
}
class "GtkWidget" style "gtk-default-zh-cn" |
|
2. Fox Toolkit
http://www.fox-toolkit.com/
3.GTK+
4.TK
5.Qt
6.SWT
标准窗口小部件工具箱(Standard Widget Toolkit,SWT)
在SWT之前,Sun已经提供了一个跨平台GUI开发工具包AWT (Abstract Windowing Toolkit)。虽然AWT框架也使用的是原生窗口部件(native widgets),但是它一直未能突破LCD问题。LCD问题导致了一些主要平台特征的遗失。
为解决这个问题,Sun又创建了一个新的框架。这个框架不再使用原生窗口部件,而是使用仿真窗口部件(emulated widgets)。这个方法虽然解决了LCD问题,并且提供了丰富的窗口部件集,但是它也带来了新的问题。例如,Swing应用程序的界面外观不再和原生应用程序的外观相似。虽然在JVM中这些Swing应用程序已经得到了最大程度的性能改善,但是它们还是存在着其原生对应物所不具有的性能问题。并且,Swing应用程序消耗太多的内存,这样Swing不适于一些小设备,如PDA和移动电话等。
IBM进行了尝试以彻底解决AWT和Swing框架带来的上述问题。最终,IBM创建了一个新的GUI库,这就是SWT。SWT框架通过JNI来访问原生窗口部件。如果在宿主(host)平台上无法找到一个窗口部件,SWT就会自动地模拟它。
7.
WTL
基于ATL的一个库。因为使用了大量ATL的轻量级手法,模板等技术,在代码尺寸,以及速度优化方面做得非常到位。主要面向的使用群体是开发COM轻量级供网络下载的可视化控件的开发者

Johnny 在 2006-08-27 16:07:44 最后一次编辑此帖
|
 |
|
|
Johnny
Moderator
副总版主
来自:
|
|
发帖时间 : 2006-08-27 15:59:42
 |
"嵌入式GUI库"
1.FLTK
FLTK,如同其名字所表达的:The Fast Light Tool Kit,一个轻量级的GUI开发库。但这轻量级并不代表功能的羸弱,相反,FLTK在具有基本的GUI功能之外,还拥有一些特殊的功能,比如跨平台、内置 OpenGL功能、速度更快、尺寸更小、协议宽松等。当然,缺点也是有的,比如对于复杂的界面构件支持不够,资源支持的不足等。但一个工具如果使用的好,取其长而去其短,自然可以飞花摘叶皆可伤人;P
我选择FLTK 的过程还是比较曲折的,当初做ARM下的GUI开发,选择的GUI库是MiniGUI,一个国内开发的界面库。当时还支持类unix平台,对 Windows的支持尚在开发中。由于需要寻找一些问题的解答,所以经常在其论坛上搜索,从而知道了还有microwindow、nano、 qtembedded等嵌入型GUI开发库,但当时没有太过注意。后来又开始转向WINCE平台的开发,这一搁就是2年。再后来终于要做跨平台的开发,对具有跨平台的GUI开发库开始注意起来。
一开始的选择是wxWidgets,但是研究了一段时间后发现不好解决的问题越来越多,终于放弃。最头疼的就是C++类的事件传递,wxWidgets内部使用的是一个类似MFC的方法,所有传递事件的类全部要从一个根类继承,这样就导致创建的类和wxWidgets绑定过甚,复用性大大降低,同时由于wxWidgets的目标不仅仅是GUI,造成其包含功能过多,其内部结构非常复杂,虽然是 OpenSource,但要若要修改其代码还是很困难的。综上所述,wxWidgets并不符合我的要求,从而被排除在外。
之后研究的QT,老牌的跨平台GUI开发库,工具很多,开发也很人性化,qtdesign很像Delphi的界面开发方式,代码带有强烈的linux风格,但是看看附带的库文件又实在让人有些泄气,尺寸大,发布麻烦。所以在试用了一段时间后还是放弃了。
在此期间,其实也看到过一些对FLTK的介绍,但大多数对其评价不高,也就没有注意。直到有一次偶然心血来潮,上http: //www.fltk.org看了一下,发现FLTK 似乎正对我的胃口,这才开始对其进行了深入的研究。经过一段时间的实际开发,个人觉得,对于跨平台和代码简洁而言,FLTK是再适合不过了。
FLTK的底层只提供一套完整的画点、画线功能,另外附带了字体的显示功能,但FLTK对字体的支持还很粗糙,尤其对于非英文字符集而言,后面我会详细说明。在基本的点、线功能基础上,FLTK完全自己实现了一套界面,比如Button、Label、Edit、Tab等,全部都是由基本的点线画出。看到这,可能你会觉得这实在是属于自己造轮子,吃力不讨好。诚然,如果你只针对一种平台开发,这样的做法不能带来多少好处,还造成学习时间的拉长。但若要针对多个平台开发,这样做的好处就很明显了。首先是移植容易,只要针对目标平台实现基本的点线功能就可以实现代码的移植,这可能是所有跨平台GUI库中最方便最直接的方案,目前FTLK支持MacOS、Windows、Linux(x-window)等平台,针对WinCE(主要是unicode的问题)和 plam 的开发正在进行中。其次是保持了界面的一致性,虽然QT、GTK等开发库也具有这种功能,但是他们都需要一套基本库的支持,无法做到系统尺寸的优化,而对于FLTK而言,这却恰恰是他的优点和长项。最后是代码层次清楚、结构简单,由于大部分的工作就是基于底层的点线功能进行自绘,所有很多代码都是简洁明了,很少费话。
底层之上是一套以Fl_开头的类,代表了各种GUI构件,比如Fl_Window、Fl_Button、 Fl_Input等,使用起来很是容易。同时由于上面所说的,所有的界面构件都是画出来的,因此在熟悉了这种方式后,生成自己的构件也是很容易的,反正是画界面嘛,既然别人能做到,你也能做到,实在不行可以查阅源代码进行学习。这些界面类的共同特点是轻量型、都拥有一个draw(),只要在draw()里实现自己的绘画动作即可。
说到界面就不能不说其事件实现方式,对于FLTK而言,使用的是最直接的方法:while(1){}。这也是很多人批评FLTK原始的一个原因。但仔细想想,其实这是最直接的办法,不管是哪种平台,最终的事件方案不外乎是死循环和中断,中断的确具有很多好处,但只要while(1)能完成这部分的功能,那又有什么关系呢。每个界面类都有一个handle(int event),只要继承这个成员函数,就可以在其中处理自己的事务。是不是很简单?同时由于这样的事件方式,造成FLTK的刷新速度很快,事件反应迅速,也算是个附带优点了。现在大多数的开发库都是采用OO方式的事件处理方式,但FLTK却采用了最原始的函数指针方式,也算是一个异类,这可能和FLTK的 unix背景有关,无论如何,这种方式还是需要一定的适应时间的,而且这种方式的优缺点也是属于各花入各眼了,不过我本人还是很喜欢这种方式的,谁叫我比较原始呢#-_-
FLTK产生于NeXT环境,发展于X-window环境,所以对图形加速的支持必然是选择OpenGL。FLTK 使用Fl_Gl_Window这个类将OpenGL的基本功能囊括其中,只要在Fl_Gl_Window的draw()里glbegin/glend即可,基本的设置工作FLTK全都做好了,对于我现在的系统要求简直是最适合不过了。
FLTK基于LGPL,对使用者的要求非常宽松: Contrary to popular belief, it can be used in commercial software - even Bill Gates could use it! 所以开发者不需要担心其项目的隐形问题。但是如果对FLTK进行了卓有成效的修正最好还是能回馈给开发组,所谓我为人人,人人为我嘛。
说了一堆的好话,现在开始谈谈FLTK的缺点。首先一条就是对非英文字体特别是中文的支持比较差,甚至是非常差。在Windows平台下还好一点,因为在 Windows平台下使用的是TextOut函数输出字符串,但是在X-Window环境下就完蛋了,无法正确显示中文,也不能调用输入法进行输入。从这点来说,FLTK还是只适合一些封闭软件的开发,对于通用软件而言FLTK并非是一个好的选择。但只能在Windows平台下开发中文软件也不是个办法,要解决中文的显示问题也不难,目前FTLK的稳定版是1.1.7,开发版是2.0,有人针对1.xx版本修改了一个unicode版本,可以很平滑的支持汉字的显示,但很遗憾,我没有编译成功过,如果谁编译成功了可以给我来个信。2.0已经对非英文的支持进行了专门的开发,但目前还没有release,在不久的将来应该可以完整的解决这个问题。目前,要么等待,要么就像我这样,用点阵字库瞒天过海。具体方法因为还不够成熟,就不公布了。
无论如何,FLTK的目标还是针对嵌入式和封闭软件的开发,所以复杂的界面并非其长项,如果想做出花哨复杂的界面,还是用其他GUI库比较好,FLTK并不适合。
综上所述,FLTK的优点和缺点都是非常的突出,如何取舍还是自己决定吧。

|
 |
|
|
Johnny
Moderator
副总版主
来自:
|
|
发帖时间 : 2006-08-27 16:19:24
 |
"嵌入式GUI库Nano-X (原MicroWindows )"
Nano-X是一种开放源代码工具,旨在为小型设备和平台提供现代图形窗口环境的功能。借助这种体系结构,开发人员能够轻松地往其设计中添加不同显示器、鼠标、触摸屏和键盘设备。它还附带有一整套图形化组件,用于构建专用GUI。Nano-X工具的一个关键特点是小的系统开销(50-250k的内存)。这种优势实现了强大的嵌入式GUI系统,同时还将设计成本控制在最低。
可作为AWT backend
Nano-X 加上tinyWidget是一个非常好的搭配, Nano-X可以设定为不是
Client/server结构,tinyWidget有TextBox,CombBox,Menu,ListBox,Label,Picture,
Icon,关键是代码少,而且有一个好的层次:
Driver+engine+nano-x+tinyWidget

Johnny 在 2006-08-27 16:24:18 最后一次编辑此帖
|
 |
|
|
Johnny
Moderator
副总版主
来自:
|
|
发帖时间 : 2006-08-27 16:26:36
|
|
Johnny
Moderator
副总版主
来自:
|
|
发帖时间 : 2006-08-27 16:48:59
 |
"RTOS Grabs GUI"
RTOS Grabs GUI
It consumes only 8 kbytes of ram. The code is only 100 kbytes. That's what comes with the fully configured Portable Embedded GUI (PEG) interface from Swell Software, now available with Enea's OSE real-time operating system (RTOS). OSE's memory protection, multitasking, message-passing, and interrupt processing facilities fully support PEG. The PEG C++ library is ROMable and provides windows, toolbars, menus, dials, bars, dialog and status boxes, buttons, charts, lights, and scales. It comes with a screen builder and supports custom fonts. The royalty-free license is $7995 per project.
http://www.ose.com/

|
 |
|
|
Johnny
Moderator
副总版主
来自:
|
|
发帖时间 : 2006-08-27 16:49:49
|
|
Johnny
Moderator
副总版主
来自:
|
|
发帖时间 : 2006-08-27 16:51:50
|
|
Johnny
Moderator
副总版主
来自:
|
|
发帖时间 : 2006-08-27 16:53:30
|
|
Johnny
Moderator
副总版主
来自:
|
|
发帖时间 : 2006-08-27 17:31:48
|
|
Johnny
Moderator
副总版主
来自:
|
|
发帖时间 : 2006-08-27 17:34:57
 |
"Tilcon"
实时系统图形界面-Tilcon
Tilcon是目前最先进的实时操作系统图形开发工具。同步支持最新版本的Tornado/VxWorks以及WindML多媒体库。适用与 VxWorks实时环境下构建虚拟仪表,实时控制,分布式控制等高级图形应用。Tilcon本身已经集成大量成熟控件,用户再无需调用低级的图形函数去画线填充,可以象Windows下VB可视化编程一样用拖动控件的方式构造自己的图形应用。最大的简化了用户开过程。
Tilcon工具细化了工业类控件,自动化控制,汽车类,国防/武器类等高级专业控件。用户可以简单的修改属性参数就能定制出各种3D或2D效果风格的虚拟仪表或图形窗口,为用户提供最高效,逼真的应用效果。
Tilcon采用了最先进的图形技术,用户开发的图形界面不会有任何用户自己编写的程序与图形系统混合。图形界面的开发质量,绝不会影响系统的安全性和稳定性。彻底解决了困扰嵌入式实时图形领域应用的难题,具有极高的可靠性和可维护性。
Tilcon开发的图形界面同时支持本地和分布式显示。图形界面开发完成后就可以自动的显示在本地或通过TCP/IP网络显示到其他网络平台上。支持 OPC,XML,SOAP等标准工业协议。已经成功的应用在医疗仪器,工业流水线,军用武器,航空/航天等领域。

|
 |
|
|
Johnny
Moderator
副总版主
来自:
|
|
发帖时间 : 2006-08-27 17:48:22
|
|
hoozh
Member
8086
来自:
|
|
发帖时间 : 2007-03-22 11:07:30
 |
"Re:跨平台的GUI库"
奇怪,上面的网站没一个打得开的

|
 |
|
|
hoozh
Member
8086
来自:
|
|
发帖时间 : 2007-03-22 13:28:21
|
|
|
 |