嵌入式Linux常用GUI系統(tǒng)

姓名:鄧皓軒? 學(xué)號(hào):19020100151? 學(xué)院:電子工程學(xué)院

轉(zhuǎn)自:嵌入式Linux常用GUI系統(tǒng)_行知致簡(jiǎn)的專欄-CSDN博客

【嵌牛導(dǎo)讀】嵌入式Linux常用GUI系統(tǒng)

【嵌牛鼻子】介紹嵌入式Linux常用GUI系統(tǒng)

【嵌牛提問(wèn)】嵌入式Linux常用GUI系統(tǒng)有哪些

1.Linux中的一些GUI基礎(chǔ)架構(gòu)

1.1 X Window

1.2 SVGALib

1.3 FrameBuffer

1.4 LibGGI


2 Linux領(lǐng)域內(nèi)的高級(jí)圖形庫(kù)

2.1 Xlib及相關(guān)的其他一些圖形庫(kù)

2.2 SDL (Simple DirectMedia Layer)

2.3 Allegro

2.4 Mesa3D

2.5 DirectFB


3 嵌入式Linux系統(tǒng)中的GUI(圖形用戶界面)

3.1 NanoX(舊稱MicoroWindows)

http://www.microwindows.org/

3.2 OpenGUI(舊稱FastGL)

http://www.tutok.sk/fastgl/

3.3 Qt / Embedded

== Qt library TrollTech

TrollTech已被Nokia收購(gòu),所以之前主頁(yè):

http://www.trolltech.com/

會(huì)跳轉(zhuǎn)到:

http://qt.nokia.com/

3.4 MiniGUI

http://www.minigui.org


【參考資料】

1.Embedded Linux Graphics System

2.基于Linux的嵌入式圖形界面(GUI),您使用哪個(gè)?

3.MiniGUI 其他同類軟件的區(qū)別

4.Wind River Tilcon Graphics Suite


主流嵌入式開(kāi)源GUI比較

https://blog.csdn.net/anyuliuxing/article/details/78431561

2017年11月03日 09:23:12anyuliuxing閱讀數(shù) 13966更多

所屬專欄:MiniGUI

?版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。如果轉(zhuǎn)載,請(qǐng)注明出處。 https://blog.csdn.net/anyuliuxing/article/details/78431561

前言

  本文主要說(shuō)明了MicroWindows、MiniGui、QT、GTK+、OpenGUI和FLTK,第七小節(jié)是對(duì)比的詳細(xì)表格,內(nèi)容是根據(jù)網(wǎng)上的一些資料還有各大開(kāi)源GUI的官網(wǎng)的資料整理而來(lái),目的是為自己以后學(xué)習(xí)把握方向。

1 MicroWindows

首先看一下效果圖片吧,都在MicroWindows官網(wǎng)

Microwindows 是一個(gè)著名的開(kāi)放式源碼嵌入式GUI 軟件,遵循MPL協(xié)議,目的是把圖形視窗環(huán)境引入到運(yùn)行Linux 的小型設(shè)備和平臺(tái)上。作為X Window 的替代品,Microwindows可以使用更少的RAM 和文件存儲(chǔ)空間(100K-600K)提供與X Window 相似的功能。Microwindows 允許設(shè)計(jì)者輕松加入各種顯示設(shè)備、鼠標(biāo)、觸摸屏和鍵盤等。Microwindows 的可移植性非常好,基本上用 C 語(yǔ)言實(shí)現(xiàn),只有某些關(guān)鍵代碼使用了匯編以提高速度。Microwindows 支持ARM芯片。盡管Microwindows 完全支持linux,但是它內(nèi)部的可移植結(jié)構(gòu)是基于一個(gè)相對(duì)簡(jiǎn)單的屏幕設(shè)備接口,可在許多不同的RTOS和裸機(jī)上運(yùn)行。

Microwindows 的圖形引擎能夠運(yùn)行在任何支持readpixel, writepixel,drawhorzline, drawvertline 和setpalette 的系統(tǒng)之上。在底層函數(shù)的支持之下,上層實(shí)現(xiàn)了位圖,字體,光標(biāo)以及顏色的支持。系統(tǒng)使用了優(yōu)化的繪制函數(shù),這樣當(dāng)用戶在移動(dòng)窗口時(shí)可以提供更好的響應(yīng)。內(nèi)存圖形繪制和移動(dòng)的實(shí)現(xiàn)使得屏幕畫(huà)圖顯得很平滑,這點(diǎn)特別在顯示動(dòng)畫(huà)、多邊形繪制、任意區(qū)域填充、剪切時(shí)有用。Microwindows 支持新的Linux內(nèi)核幀緩存(FrameBuffer)結(jié)構(gòu),目前提供每像素1、2、4、8、16、24 和32 位的支持,另外還支持彩色顯示和灰度顯示,其中彩色顯示包括真彩色(每像素15、16 和32 位)和調(diào)色板(每像素1, 2, 4 和 8 位)兩種模式。在彩色顯示模式下,所有的顏色用RGB 格式給出,系統(tǒng)再將它轉(zhuǎn)換成與之最相似的可顯示顏色,而在單色模式下中則是轉(zhuǎn)換成不同的灰度級(jí)。Microwindows支持窗口覆蓋和子窗口概念、完全的窗口和客戶區(qū)剪切、比例和固定字體,還提供了字體和位圖文件處理工具。Microwindows支持的中文字符集是GB2312,并不支持Unicode。

Microwindows 采用分層設(shè)計(jì)方法。在最底層,屏幕,鼠標(biāo)/觸摸屏以及鍵盤驅(qū)動(dòng)程序提供了對(duì)物理設(shè)備訪問(wèn)的能力。在中間層,實(shí)現(xiàn)了一個(gè)可移植的圖形引擎,支持行繪制,區(qū)域填充,剪切以及顏色模型等。在上層,實(shí)現(xiàn)多種API 以適應(yīng)不同的應(yīng)用環(huán)境。

兩種API:Win32和Nano-X

Microwindows中使用兩種流行的圖形編程接口:Microsoft Windows Win32/WinCE圖形顯示接口(GDI)和Xlib-like接口。前者應(yīng)用于所有的Windows CE和Win32應(yīng)用程序,后者就象Nano-X,應(yīng)用于所有Linux X插件集的最底層。這樣做可以讓大量的Windows程序員開(kāi)發(fā)圖形應(yīng)用程序,類似地也可以讓Linux圖形程序員用X接口開(kāi)發(fā)圖形應(yīng)用程序。

Nano-X服務(wù)器占用的資源大約在100K到150K。原始Nano-X應(yīng)用程序的平均大小在30K到60K。由于Nano-X是為有內(nèi)存限制的低端設(shè)備設(shè)計(jì)的,所以它不象X那樣支持很多函數(shù),因此它實(shí)際上不能作為微型X(Xfree86)的替代品。

Microwindows系統(tǒng)以圖形方式支持目標(biāo)平臺(tái)的主機(jī)平臺(tái)仿真。也就是說(shuō),用于Linux的Microwindows應(yīng)用程序可以在桌面上進(jìn)行開(kāi)發(fā)和原型設(shè)計(jì),運(yùn)行和測(cè)試,而無(wú)需在目標(biāo)平臺(tái)上進(jìn)行交叉編譯和運(yùn)行。這是使用Microwindows’ X screen驅(qū)動(dòng)程序完成的,而不是framebuffer驅(qū)動(dòng)程序,其中目標(biāo)應(yīng)用程序在桌面主機(jī)上運(yùn)行并顯示在X窗口中。可以告訴驅(qū)動(dòng)程序以每像素位數(shù)和顏色深度精確地模擬目標(biāo)平臺(tái)的顯示。因此,即使桌面系統(tǒng)是24位顏色,它可以顯示一個(gè)2bpp灰度級(jí)來(lái)預(yù)覽目標(biāo)應(yīng)用程序。由于主機(jī)和目標(biāo)機(jī)都運(yùn)行Linux,因此大多數(shù)所有操作系統(tǒng)服務(wù)都可在桌面主機(jī)上使用。

2 MiniGui

MiniGui官網(wǎng),更多效果圖參見(jiàn)我前面寫的文章《MiniGui Samples運(yùn)行效果》

MiniGUI 是針對(duì)嵌入式系統(tǒng)設(shè)計(jì)和優(yōu)化的完整圖形支持系統(tǒng),遵循GPL協(xié)議。作為操作系統(tǒng)和應(yīng)用程序之間的一個(gè)中間件,MiniGUI 將底層操作系統(tǒng)和硬件平臺(tái)的細(xì)節(jié)隱藏起來(lái),并為上層的應(yīng)用程序提供了一致接口。MiniGUI 的主要技術(shù)特性描述如下:

跨操作系統(tǒng)支持,具體包括普通嵌入式 Linux/uClinux、VxWorks、eCos、uC/OS-II、pSOS、ThreadX、Nucleus、OSE 等,同時(shí)還提供 Win32 平臺(tái)上的 SDK 開(kāi)發(fā)包,方便嵌入式應(yīng)用程序的開(kāi)發(fā)和調(diào)試。

多運(yùn)行模式支持,為了適應(yīng)不同的操作系統(tǒng)運(yùn)行環(huán)境,MiniGUI可配置成三種運(yùn)行模式:MiniGUI-Threads、MiniGUI-Processes及MiniGUI-Standalone。

內(nèi)建資源支持。我們可以將 MiniGUI 所使用的資源,諸如位圖、圖標(biāo)和字體等編譯到函數(shù)庫(kù)中,該特性可提高 MiniGUI 的初始化速度,并且非常適合 eCos/uCOS-II/ThreadX 等無(wú)文件系統(tǒng)支持的實(shí)時(shí)嵌入式操作系統(tǒng)。

完備的多窗口機(jī)制和消息傳遞機(jī)制。

提供常用的控件類,包括靜態(tài)文本框、按鈕、單行和多行編輯框、列表框、組合框、菜單按鈕、進(jìn)度條、滑塊、屬性頁(yè)、工具欄、樹(shù)型控件、月歷控件、旋鈕控件、酷工具欄、網(wǎng)格控件、動(dòng)畫(huà)控件等。

對(duì)話框和消息框支持。

其它 GUI 元素,包括菜單、加速鍵、插入符、定時(shí)器等。

界面皮膚支持,用戶可通過(guò)皮膚支持獲得華麗的圖形界面。

支持低端顯示設(shè)備(比如單色 LCD)和高端顯示設(shè)備(8 位色及以上顯示設(shè)備)。通過(guò) MiniGUI 的圖形抽象層及圖形引擎技術(shù),還可以支持特殊的顯示設(shè)備,比如 YUV 顯示設(shè)備。

提供有增強(qiáng) GDI 函數(shù),包括光柵操作、復(fù)雜區(qū)域處理、橢圓、圓弧、多邊形以及區(qū)域填充等函數(shù)。在提供有兼容于 C99 規(guī)范的數(shù)學(xué)庫(kù)平臺(tái)上,還提供有高級(jí)二維繪圖函數(shù),可設(shè)置線寬、線型以及填充模式等。通過(guò) MiniGUI 的圖形抽象層及圖形引擎技術(shù),我們也可以讓上述高級(jí) GDI 接口在低端顯示屏上實(shí)現(xiàn)。

Windows 的資源文件支持,如位圖、圖標(biāo)、光標(biāo)等。

各種流行圖像文件的支持,包括 Windows BMP、GIF、JPEG、PNG等(JPEG 及 PNG的支持通過(guò) libjpeg 及 libpng 函數(shù)庫(kù)提供)。

多字符集和多字體支持,目前支持 ISO8859-1~I(xiàn)SO8859-15、GB2312、GBK、GB18030、BIG5、EUC-JP、Shift-JIS、EUC-KR、UNICODE(UTF-8、UTF-16 編碼)等字符集,支持等寬點(diǎn)陣字體、變寬點(diǎn)陣字體、Qt/Embedded 使用的嵌入式字體 QPF、TrueType 以及 Adobe Type1 等矢量字體(TrueType 及 Type1 的支持分別通過(guò) freetype 1.3 及 libt1 函數(shù)庫(kù)提供)。同時(shí),對(duì)于點(diǎn)陣字體 MiniGUI 也可以進(jìn)行自動(dòng)放大處理,并可針對(duì)電視等特殊顯示設(shè)備實(shí)現(xiàn)防鋸齒功能。

多種鍵盤布局的支持。MiniGUI 除支持常見(jiàn)的美式 PC 鍵盤布局之外,還支持法語(yǔ)、德語(yǔ)等西歐語(yǔ)種的鍵盤布局。

輸入法支持,用于提供各種可能的輸入形式;內(nèi)建有適合 PC 平臺(tái)的漢字(GB2312)輸入法支持,包括內(nèi)碼、全拼、智能拼音、五筆及自然碼等。

針對(duì)嵌入式系統(tǒng)的特殊支持,包括一般性的 I/O 流操作,字節(jié)序相關(guān)函數(shù)等。

副屏支持,當(dāng)系統(tǒng)中有多個(gè)視頻設(shè)備時(shí),可將一個(gè)作為MiniGUI的主屏,實(shí)現(xiàn)完整的多窗口系統(tǒng);而其它設(shè)備作為副屏,在其上通過(guò)MiniGUI 的圖形接口來(lái)實(shí)現(xiàn)文字渲染、圖形顯示等功能。

和其它針對(duì)嵌入式產(chǎn)品的圖形系統(tǒng)相比,MiniGUI 在對(duì)系統(tǒng)的需求上具有如下幾大優(yōu)勢(shì):

可伸縮性強(qiáng)

MiniGUI 豐富的功能和可配置特性,使得它既可運(yùn)行于 CPU 主頻只有 60MHz 的低端產(chǎn)品中,亦可運(yùn)行于高端嵌入式設(shè)備中,并使用 MiniGUI 的高級(jí)控件風(fēng)格及皮膚界面等技術(shù),創(chuàng)建華麗的用戶界面。

MiniGUI 的跨操作系統(tǒng)特性,使得 MiniGUI 可運(yùn)行在最簡(jiǎn)單的嵌入式操作系統(tǒng)之上,如 uC/OS-II,也可以運(yùn)行在具有現(xiàn)代操作系統(tǒng)特性的嵌入式操作系統(tǒng)之上,如 Linux,而且 MiniGUI 為嵌入式 Linux 系統(tǒng)提供了完整的多窗口圖形環(huán)境。這些特性,使得MiniGUI 具有非常強(qiáng)的可伸縮性。可伸縮性是 MiniGUI 從設(shè)計(jì)之初就考慮且不斷完善而來(lái)的。這個(gè)特性使得 MiniGUI 可應(yīng)用于簡(jiǎn)單的行業(yè)終端,也可應(yīng)用于復(fù)雜的消費(fèi)類電子產(chǎn)品。

輕型、占用資源少

MiniGUI 是一個(gè)定位于輕量級(jí)的嵌入式圖形庫(kù),對(duì)系統(tǒng)資源的需求完全考慮到了嵌入式設(shè)備的硬件情況,如 MiniGUI 庫(kù)所占的空間最小可以裁剪到500K左右,對(duì)目前的嵌入式設(shè)備來(lái)說(shuō),滿足這一條件是綽綽有余的。此外,測(cè)試結(jié)果表明,MiniGUI 能夠在 CPU 主頻為30 MHz,僅有4M RAM的系統(tǒng)上正常運(yùn)行(使用 uClinux 操作系統(tǒng)),這是其它針對(duì)嵌入式產(chǎn)品的圖形系統(tǒng)所無(wú)法達(dá)到的。

高性能、高可靠性

MiniGUI 良好的體系結(jié)構(gòu)及優(yōu)化的圖形接口,可確保最快的圖形繪制速度。在設(shè)計(jì)之初,我們就充分考慮到了實(shí)時(shí)嵌入式系統(tǒng)的特點(diǎn),針對(duì)多窗口環(huán)境下的圖形繪制開(kāi)展了大量的研究及開(kāi)發(fā),優(yōu)化了 MiniGUI 的圖形繪制性能及資源占用。MiniGUI 在大量實(shí)際系統(tǒng)中的應(yīng)用,尤其在工業(yè)控制系統(tǒng)的應(yīng)用,證明 MiniGUI 具有非常好的性能。

從 1999 年 MiniGUI 的第一個(gè)版本發(fā)布以來(lái),就有許多產(chǎn)品和項(xiàng)目使用 MiniGUI,MiniGUI 也不斷從這些產(chǎn)品或者項(xiàng)目當(dāng)中獲得發(fā)展動(dòng)力和新的技術(shù)需求,逐漸提高了自身的可靠性和健壯性。有關(guān) MiniGUI 的最新成功案例,您可以訪問(wèn)飛漫公司網(wǎng)站的典型案例部分:http://www.minigui.org/

可配置性

為滿足嵌入式系統(tǒng)各種各樣的需求,必須要求 GUI 系統(tǒng)是可配置的。和 Linux 內(nèi)核類似,MiniGUI 也實(shí)現(xiàn)了大量的編譯配置選項(xiàng),通過(guò)這些選項(xiàng)可定 MiniGUI 庫(kù)中包括哪些功能而同時(shí)不包括哪些功能。大體說(shuō)來(lái),我們可以在如下幾個(gè)方面對(duì) MiniGUI 進(jìn)行定制配置:

指定 MiniGUI 要運(yùn)行的硬件平臺(tái)。 指定 MiniGUI 要運(yùn)行的操作系統(tǒng)。 指定生成基于線程的 MiniGUI-Threads 運(yùn)行模式還是基于進(jìn)程的 MiniGUI-Processes 運(yùn)行模式,或者只是最簡(jiǎn)單的 MiniGUI-Standalone 運(yùn)行模式。 指定需要支持的 GAL 引擎和 IAL 引擎,以及引擎相關(guān)選項(xiàng)。 指定需要支持的字體類型。 指定需要支持的字符集。 指定需要支持的圖像文件格式。 指定需要支持的控件類。 指定控件和窗口的整體風(fēng)格,可以通過(guò)指定不同的渲染器完成。 這些配置選項(xiàng)大大增強(qiáng)了 MiniGUI 的靈活性,對(duì)用戶來(lái)講,可針對(duì)具體的應(yīng)用需求量體裁衣,開(kāi)發(fā)最適合產(chǎn)品需求的應(yīng)用軟件。

3 QT

QT官網(wǎng),效果圖如下

Qt 是一個(gè)跨平臺(tái)的C++應(yīng)用程序框架,支持Windows、Linux、Mac OS X、Android、iOS、Windows Phone、嵌入式系統(tǒng)等。也就是說(shuō),Qt 可以同時(shí)支持桌面應(yīng)用程序開(kāi)發(fā)、嵌入式開(kāi)發(fā)和移動(dòng)開(kāi)發(fā),覆蓋了現(xiàn)有的所有主流平臺(tái)。你只需要編寫一次代碼,發(fā)布到不同平臺(tái)前重新編譯即可。

Qt 不僅僅是一個(gè)GUI庫(kù),它除了可以創(chuàng)建漂亮的界面,還有很多其他組件,例如,你不再需要研究STL,不再需要C++的頭文件,不再需要去找解析XML、連接數(shù)據(jù)庫(kù)、Socket 的各種第三方庫(kù),這些 Qt 都已經(jīng)內(nèi)置了。Qt 是應(yīng)用程序開(kāi)發(fā)的一站式解決方案!Qt 雖然龐大,封裝較深,但它的速度并不慢,雖不及MFC,但比Java、C#要快。Qt 程序最終會(huì)編譯成本地代碼,而不是依托虛擬機(jī)。

使用Qt開(kāi)發(fā)的軟件,相同的代碼可以在任何支持的平臺(tái)上編譯與運(yùn)行,而不需要修改源代碼。會(huì)自動(dòng)依平臺(tái)的不同,表現(xiàn)平臺(tái)特有的圖形界面風(fēng)格。

Linux/X11:用于X Window System(如Solaris、AIX、HP-UX、Linux、BSD)。支持KDevelop和Eclipse IDE集成

Mac:用于Apple Mac OS X。基于Cocoa框架。支持Universal Binary。支持以Xcode編輯、編譯和測(cè)試。

Windows:用于Microsoft Windows。支持Visual Studio集成,也可以使用MinGW編譯

Embedded Linux:用于嵌入式Linux。可以通過(guò)編譯移除不常使用的組件與功能。通過(guò)自己的視窗系統(tǒng)QWS,不需依賴X Window System,直接寫入Linux幀緩沖。可以減少內(nèi)存消耗。并提供虛擬幀緩沖QVFb,方便在桌面系統(tǒng)上進(jìn)行嵌入式測(cè)試。

Windows CE / Mobile:用于Windows CE

Symbian:用于Symbian platform

Maemo/MeeGo:用于Maemo

Wayland:用于Wayland顯示服務(wù)器,Qt應(yīng)用程序可以在運(yùn)行時(shí)切換圖形后端,如X與Wayland。

4 Gtk+

Gtk+官網(wǎng),效果圖如下

Gtk+(GIMP Tool Kit,GIMP工具包)是一個(gè)用于創(chuàng)造圖形用戶接口的圖形庫(kù)。Gtk+是基于LGPL授權(quán)的,因此可以用Gtk+開(kāi)發(fā)開(kāi)放源碼軟件、自由軟件,甚至商業(yè)的、非自由的軟件,并且不需要為授權(quán)費(fèi)或版權(quán)費(fèi)花費(fèi)一分錢。Gtk已在大量軟件項(xiàng)目,包括Gnome中得到了廣泛應(yīng)用。

Gtk+圖形庫(kù)使用一系列稱為“構(gòu)件”的對(duì)象來(lái)創(chuàng)建應(yīng)用程序的圖形用戶接口。它提供了窗口、標(biāo)簽、命令按鈕、開(kāi)關(guān)按鈕、檢查按鈕、無(wú)線按鈕、框架、列表框、組合框、樹(shù)、列表視圖、筆記本、狀態(tài)條等構(gòu)件。可以用它們來(lái)構(gòu)造非常豐富的用戶界面。

GTK本質(zhì)上是面向?qū)ο蟮膽?yīng)用程序編程接口(API)。GObject 也就是這種面向?qū)ο蟮臋C(jī)制可以為 GTK+綁定很多種開(kāi)發(fā)語(yǔ)言。雖然完全是用C寫成的,但它仍然是用類和回調(diào)函數(shù)(指向函數(shù)的指針)的方法實(shí)現(xiàn)的。因?yàn)镚tk+是用C語(yǔ)言編寫的,所以在開(kāi)發(fā)Linux下的GUI程序時(shí)使用C語(yǔ)言是非常方便的。 在GTK下還可以使用圖形化編程工具Glade,一種GUI生成器,可以快速生成創(chuàng)建界面的C源程序。

自從Qt推出了嵌入式版本之后,雖然GTK+并非商業(yè)公司所發(fā)展,但也加緊腳步推出了GtkFB方案,其宗旨就是要為嵌入式系統(tǒng)推出一套基于GTK+的GUI解決方案。與Qt/Embedded類似,GtkFB也跳過(guò)X層直接與FrameBuffer溝通,因此也具有Qt/Embedded的幾項(xiàng)優(yōu)點(diǎn),不過(guò)由于不是商業(yè)軟件,在發(fā)展的速度上較為緩慢。

5 OpenGUI

OpenGUI官網(wǎng),效果圖如下

OpenGUI在Linux系統(tǒng)上存在已經(jīng)很長(zhǎng)時(shí)間了。這個(gè)庫(kù)是用C++編寫的,只提供C++接口。OpenGUI基于一個(gè)用匯編實(shí)現(xiàn)的x86圖形內(nèi)核,提供了一個(gè)高層的C/C++圖形/窗口接口。OpenGUI提供了二維繪圖原語(yǔ)、消息驅(qū)動(dòng)的API及BMP文件格式支持。OpenGUI功能強(qiáng)大,使用方便。OpenGUI 支持鼠標(biāo)和鍵盤的事件,在Linux上基于FrameBuffer或者SVGALib實(shí)現(xiàn)繪圖。由于其基于匯編實(shí)現(xiàn)的內(nèi)核并利用MMX指令進(jìn)行了優(yōu)化,OpenGUI運(yùn)行速度非常快。正由于其內(nèi)核用匯編實(shí)現(xiàn),可移植性受到了影響。通常在驅(qū)動(dòng)程序一級(jí),性能和可移植性是矛盾的,必須找到一個(gè)折衷。OpenGUI采用LGPL條款發(fā)布。OpenGUI比較適合于基于x86平臺(tái)的實(shí)時(shí)系統(tǒng),跨平臺(tái)的可移植性較差,目前發(fā)展較慢。

6 FLTK

FLTK官網(wǎng),效果圖如下

FLTK,如同其名字所表達(dá)的:The Fast Light Toolkit,一個(gè)輕量級(jí)的GUI開(kāi)發(fā)庫(kù)。但這輕量級(jí)并不代表功能的羸弱,相反,F(xiàn)LTK在具有基本的GUI功能之外,還擁有一些特殊的功能,比如跨平臺(tái)、內(nèi)置 OpenGL功能、速度更快、尺寸更小、協(xié)議(LGPL)寬松等。當(dāng)然,缺點(diǎn)也是有的,比如對(duì)于復(fù)雜的界面構(gòu)件支持不夠,資源支持的不足等。

FLTK的底層只提供一套完整的畫(huà)點(diǎn)、畫(huà)線功能,另外附帶了字體的顯示功能,但FLTK對(duì)字體的支持還很粗糙。

最大的缺點(diǎn)是:就是對(duì)非英文字體特別是中文的支持比較差,甚至是非常差,它不支持unicode編碼。需要到2.0版本才可能支持,還在開(kāi)發(fā)當(dāng)中。

7 比較

7.1 MiniGUI和MicroWindows

  MiniGUI和MicroWindows均為自由軟件,但這兩個(gè)系統(tǒng)的技術(shù)路線卻有所不同。MiniGUI的策略是建立在比較成熟的圖形引擎之上,比如Svgalib和LibGGI,開(kāi)發(fā)的重點(diǎn)在于窗口系統(tǒng)、圖形接口之上。而MicroWindows的開(kāi)發(fā)重點(diǎn)則在底層的圖形引擎之上,所以可以對(duì)裸顯示器直接操作,而窗口系統(tǒng)和圖形接口方面的功能還稍有欠缺。比如說(shuō),MiniGUI有一套用來(lái)支持多字符集和多編碼的函數(shù)接口,可以支持各種的字符集,包括GB、BIG5、UNI-CODE等。

Nano-X 的優(yōu)點(diǎn)

與Xlib實(shí)現(xiàn)不同,Nano-X仍在每個(gè)客戶機(jī)上同步運(yùn)行,這意味著一旦發(fā)送了客戶機(jī)請(qǐng)求包,服務(wù)器在為另一個(gè)客戶機(jī)提供服務(wù)之前一直等待,直到整個(gè)包都到達(dá)為止。這使服務(wù)器代碼非常簡(jiǎn)單,而運(yùn)行的速度仍非常快;占用很小的資源。

Nano-X 的缺點(diǎn)

1、聯(lián)網(wǎng)功能部件至今沒(méi)有經(jīng)過(guò)適當(dāng)?shù)卣{(diào)整(特別是網(wǎng)絡(luò)透明性);

2、還沒(méi)有太多現(xiàn)成的應(yīng)用程序可用;

3、沒(méi)有很多文檔說(shuō)明而且沒(méi)有很好的支持

4、圖形引擎中存在許多低效算法,值得一提的是,該項(xiàng)目的許多控件是從 MiniGUI 中移植過(guò)去的,掃雷游戲也是從 MiniGUI 中移植過(guò)去的。由于該項(xiàng)目缺乏一個(gè)強(qiáng)有力的核心代碼維護(hù)人員,2010年Microwindows推出版本0.92后,該項(xiàng)目的發(fā)展開(kāi)始陷于停滯狀態(tài)。

MiniGui優(yōu)點(diǎn)

將現(xiàn)代窗口和圖形技術(shù)帶入到嵌入式設(shè)備的MiniGUI,是一個(gè)非常適合于實(shí)時(shí)嵌入式設(shè)備的高效、可靠、可定制、小巧靈活的圖形用戶界面支持系統(tǒng),而且還有miniStudio集成開(kāi)發(fā)環(huán)境

1、支持多種嵌入式操作系統(tǒng),具備優(yōu)秀的可移植性;

2、可伸縮的系統(tǒng)架構(gòu),易于擴(kuò)展;

3、功能豐富,可靈活剪裁;

4、小體積高性能間的最佳平衡;

5、廣泛的應(yīng)用領(lǐng)域。

MiniGui缺點(diǎn)

1、對(duì)圖形設(shè)備的抽象層次太高。

名稱MiniGuiMicroWindows備注

廠商飛漫(中國(guó))世紀(jì)軟件(美國(guó))?

開(kāi)發(fā)語(yǔ)言CC?

開(kāi)源協(xié)議GPLMPL?

體系結(jié)構(gòu)類WIN32WIN32/Nano-X?

最新版本3.0.12(2012.01)0.92(2010.12)都很久沒(méi)有更新

資源占用最小500K100K~600K?

網(wǎng)上資源一般少?

技術(shù)資料一般較少,官網(wǎng)有?

開(kāi)發(fā)環(huán)境vim、eclipsevim、eclipse?

移植難度相同相同移植難度都不太大

復(fù)雜度中中?

學(xué)習(xí)難度中中應(yīng)用程序?qū)崿F(xiàn)類似

應(yīng)用范圍中中根據(jù)網(wǎng)上資料

MiniGui支持系統(tǒng):Linux/uClinux、VxWorks、eCos、uC/OS-II、pSOS、ThreadX、Nucleus、OSE 等,同時(shí)還提供 Win32 平臺(tái)上的 SDK 開(kāi)發(fā)包

MicroWindows支持系統(tǒng):Linux、RTOS、裸機(jī)、X Window、MSDOS、能夠在支持readpixel,writepixel,drawhorzline和drawvertline和setpalette的任何系統(tǒng)上運(yùn)行

7.2 QT和GTK+

QT優(yōu)點(diǎn)

相對(duì)來(lái)說(shuō)易學(xué):Qt封裝的很好,幾行代碼就可以開(kāi)發(fā)出一個(gè)簡(jiǎn)單的客戶端,Qt是面向?qū)ο蟮模琎t對(duì)于用戶開(kāi)發(fā)而言是十分方便的,因?yàn)镼t良好的封裝機(jī)制令Qt的模塊化程度非常高并且可重用性好。

資料豐富:資料豐富能夠成倍降低學(xué)習(xí)成本,否則只能去看源碼,

漂亮的界面:Qt很容易做出漂亮的界面和炫酷的動(dòng)畫(huà)

獨(dú)立安裝:Qt程序最終會(huì)編譯為本地代碼,不需要其他庫(kù)的支撐,

跨平臺(tái):如果程序需要運(yùn)行在多個(gè)平臺(tái)下,同時(shí)又希望降低開(kāi)發(fā)成本,Qt幾乎是必備的。

集成環(huán)境:Qt Creator為廣大開(kāi)發(fā)者提供了免費(fèi)而又友好的集成開(kāi)發(fā)環(huán)境。

QT缺點(diǎn)

庫(kù)很大,Qt庫(kù)如果不進(jìn)行裁剪的話,實(shí)在是太大了,Qt5中的icudt52.dll就有20多M

qt Embedded memeory requirememnts:

Architecture編譯器QtCoreQtGuiQtNetworkQtWebKit

最小正常最小正常最小正常最小正常

linux x86 g++GCC 4.2.41.7M2.7M3.3M9.9M653K1.1MN/A17M

linux arm g++GCC 4.1.11.9M3.2M4.1M11M507K1.0MN/A17M

linux mips g++ (MIPS32)GCC 4.2.42.0M3.2M4.5M12M505K1003KN/A?

GTK+優(yōu)點(diǎn)

完全Cairo繪制:Cairo是什么?它是一個(gè)矢量的繪圖庫(kù),GTK+2.8,Cairo才開(kāi)始作為GTK的重要繪圖引擎,從來(lái)帶來(lái)矢量、抗鋸齒等特性

支持CSS的主題API,還支持簡(jiǎn)單的動(dòng)畫(huà)屬性

多點(diǎn)設(shè)備的支持,設(shè)計(jì)靈活、可擴(kuò)展

GObject Introspection:它讓GTK+的語(yǔ)言擴(kuò)展能力盡乎無(wú)限。以前,除了GTK+、GTKMM(C++)以外,還有一些動(dòng)態(tài)語(yǔ)言的綁定,如Pygtk、perl-gtk。但這些實(shí)現(xiàn)是各種獨(dú)立的,維護(hù)成本非常高。但是GObject Introspection實(shí)現(xiàn)了GObject對(duì)象的統(tǒng)一調(diào)用,這意味著各種語(yǔ)言只要實(shí)現(xiàn)一個(gè)GObject Introspection的包裝,什么GTK+的API,都可以通過(guò)它來(lái)調(diào)用了。就像在Python里用ctype一樣,但是通過(guò)GI技術(shù),能像使用原生API一樣來(lái)使用這些C庫(kù)。目前為止,對(duì)GI支持比較好的已經(jīng)有Python、JavaScript了。GNOME 3.0的重要組件——GNOME Shell即是使用了JavaScript來(lái)實(shí)現(xiàn)其UI邏輯部分。

QT支持系統(tǒng):Linux/X11、Mac、Windows、Android、IOS、Embedded Linux、Windows CE/Mobile、Maemo/MeeGo、Wayland,Qt 可以同時(shí)支持桌面應(yīng)用程序開(kāi)發(fā)、嵌入式開(kāi)發(fā)和移動(dòng)開(kāi)發(fā),覆蓋了現(xiàn)有的所有主流平臺(tái)

GTK+支持系統(tǒng):GNU/Linux and Unix、Windows、Mac OS X、X11、Win32、HTML 5、Wayland

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,663評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,125評(píng)論 3 414
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 175,506評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 62,614評(píng)論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,402評(píng)論 6 404
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 54,934評(píng)論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,021評(píng)論 3 440
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,168評(píng)論 0 287
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,690評(píng)論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,596評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,784評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,288評(píng)論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,027評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,404評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,662評(píng)論 1 280
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,398評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,743評(píng)論 2 370

推薦閱讀更多精彩內(nèi)容