C++100款開源界面庫[轉]


(聲明:Alberl以后說到開源庫,一般都是指著名的、或者不著名但維護至少3年以上的。那些把代碼一扔就沒下文的,Alberl不稱之為開源庫,只稱為開源代碼。這里並不是貶低,像Alberl前面那個系列的教程《 2013 duilib入門簡明教程》,還有本系列教程,還有前面介紹的CodeProject,基本上都是代碼往上面一扔,就不用再怎么維護的。這些都稱之為開源代碼,其實開源代碼對新手的幫助更大,因為很簡明的說明了代碼用法~O(∩_∩)O~)
 
    前面兩個教程已經對制作界面的幾種方式進行了比較,權威界面庫已經比較過了,那么接下來就是上一個教程介紹的那三種方式。
    而上一個教程已經說的很明確了,用那三種必須得依靠開源庫!(或者像騰訊這樣有實力的公司自己開發)    
    C++相對於Java和C#而言,確實有點悲催。C#有強大的微軟做后盾,Java也是被Sun養大,而C和C++由貝爾實驗室發明,畢竟C++只是貝爾實驗室中很普通的一項發明,並且C++的最大受益者也不是貝爾實驗室,從C++ 03 到C++ 2011隔了8年時間,顯然沒有Java和C#及時,畢竟他們都是公司運作,並且是公司中很重要的成員。而C++的推動就只能靠開源社區啦,boost是最大的貢獻者啦,然后就是linux社區、Apache等公司,再接着就是各種開源庫的作者啦。
    沒有公司的運作,顯然很多方面都比不上Java和C#。比如C#有個很著名的NOPI,操作Office毫無壓力,而C++就只有幾個沒人維護的庫,還不如用微軟的COM接口。java有個很著名的JFreeChart,顯示各種曲線圖表都夠了,但C++就沒有,只有Codeproject上面有幾個,不過還是達不到要求,但是商業的曲線庫老板又不會買,就苦了我等碼農了。Office還好,微軟的接口一向好用,在現有開源代碼的基礎上,花個把星期就可以封裝個很不錯的庫。而曲線圖表這個東東不像按鈕控件,真的很難做,難做的不是畫圖,而是各種曲線的管理,和各種效果功能的實現,細節問題一大堆,而C#和Java卻不會遇到這種常用控件還要開發的問題。 這只是其中的兩個例子而已,Alberl平時查資料的時候,也發現了C++的很多不給力(主要體現在界面方向,邏輯方向倒是非常給力),因為C++本來就只是邏輯處理,連多線程都沒有,界面就更別提了,而C#和Java都是一整套開發框架,所以非常省事。注意啦,這里不是勸大家不要用C++,而是說C++真的需要做很多事情。對C++開源庫的牢騷完畢^_^
 
    還記得第二個教程給出了數十款播放器的對比嗎? 同樣有NB的老外給C++的界面庫也做了詳細對比,同樣也有上百種~O(∩_∩)O~
    下面請看正文(格式支持不好,推薦看原文。可能很少小伙伴會看完,不過最后面有Alberl的分析哦~):
 
 
=========================================================================
老外collect的GUI Tookit的對比,網址: http://www.free-soft.org/guitool/,下邊給出部分引用,詳細看原網頁。

The GUI Toolkit, Framework Page

User interfaces occupy an important part of software development. This page provides a comprehensive reference on toolkits for building graphical user interfaces (GUIs), with emphasis on resources for  Free Software ( Open Source). This page focuses on personal computers but also references some offerings for embedded products.
Note to people using the geocities.com site: if you see the site down due to bandwidth limit being exceeded, please consider using the other site listed below 

GUI Toolkit developers: please let  me know of news/changes to your projects/products so I can update this page accordingly.

This page resides in  http://www.geocities.com/SiliconValley/Vista/7184/guitool.html and 
http://www.atai.org/guitool/

Page created April 17, 1997 (86). recent changes

Thanks to  Alejandro de Garate for improving the layout of this page  .© Copyright 1997-2003, 2005 (  ROC Years 86-92, 94,96), by Li-Cheng (Andy) Tai. See  copyright for details. Last updated  May 13, 2007 (96)
Free toolkitsC/C++ Java other languages    | commercial toolkitsC/C++ Java   | Related links   |  copyright

GPL: GNU General Public License 
LGPL:GNU Library/Lesser General Public License 
PD: Public Domain 
BSD: BSD or X11-like license (commonly allowing you todo whatever you want provided the original copyright notice is kept and credit given)
Art: The Perl Artistic License 
MPL: Mozilla Public License

=========================================================================

 

有幾個小伙伴看完啦? 看完的老板會多發年終獎喲^_^ 
    由於這里不僅介紹了C++,還介紹了其他語言,那我們就挑少的先講吧。
 
一、C#
    其中C#的庫是最少的,只有Mono和DotGNU兩個,而其中的 Mono就是逆天了的跨平台C#庫啦,很多人感慨如果C#這么方便的語言可以在linux上用就爽歪歪啦,這不,Mono不僅可以在linux PC機上運行,還可以在Android上運行,誰說微軟不跨平台了!
    Alberl之前只是聽說.NET拖拖控件就可以做出很漂亮的界面,結果發現連直線、圓形都可以直接拖上去,沒想到有這么方便! 在向8年.NET經驗的同事請教了之后,發現.NET簡直完爆VC++的那一系列界面(如MFC、WTL),MFC要好多個步驟才能搞定布局、自適應窗口大小、改變背景色、控件透明等等,但是在.NET上都是動動鼠標、右鍵完事。哎,說真的,搞得Alberl當時都驚呆了!!! 
    如果只是開發普通樣式的界面,真的不用考慮MFC了! 不過話說回來,如果要開發出QQ、金山那樣的界面,.NET也是需要做很多事情的,雖然只要花時間就可以完成(而MFC是花時間也不一定能完成的,還需要有比較高的水平),但如果VC++用上開源界面庫的話,就比.NET要爽很多啦~
 
二、Python、Lua、Perl
    這幾個腳本語言也有人去折騰界面,其中wxPython還被標記成【good】,可見也是做得很不錯的。
 
三、Java
    Java的界面庫也有十多款,其中SWT被標記成【good】,介紹說是標准的工具,Eclipse的一部分。(Alberl對GWT比較眼熟,可能是記錯了)
 
四、SDL
    小伙伴們會發現有很多SDL字樣,那么SDL是何物呢? 還記得第一篇教程嗎? 那個ffmpeg播放視頻就是用的SDL。 SDL在多媒體和游戲領域可是非常出名的哦。VLC的播放也可以用SDL哦~
 
五、C++
    可以看到,C#和Java的界面庫很少,而C++的多到看不完,難道是C++很強大? 錯,同一類型的開源庫越多,就說明這個方向越弱。而C#和Java的界面庫之所以這么少,是因為他們的界面庫已經能滿足目前絕大部分需求了,無需其他界面庫了。而C++卻一直沒有一個好點的界面庫,所以總是有大牛覺得其他界面庫不好用,於是就有了各種各樣的界面庫,並且十多年過去了,還沒有定論,哪一種界面庫都沒能一統天下。
    不過C++的界面庫是分linux和Windows的,兩個平台的形勢大不一樣。
linux
    linux下面就簡單多了,由於其應用大部分都沒有界面的,有界面的要求也不是很高,所以現有的開源庫已經能夠滿足需求了,而在上述這么多開源庫中,只有 QT被標記為【Best】,可見QT是非常被認可的。而linux下就以QT最為權威了,而WxWidgets、GTK、GTK+、Fltk也比較著名,linux嵌入式下miniGUI最為著名(終於看到中國人的開源項目被世界認可了^_^),其他的很多界面庫就不提了,總之,linux下面,有這些界面庫已經夠用了。
windows商業庫
    那么windows下的形勢就完全不同啦,不僅開源庫很多,而且商業庫也很多,其中不僅有大公司的商業庫,也有很多小公司的商業庫,競爭非常激烈,不過微軟是其中的巨頭!上述列表中提到的OWL、VCL、CLX都是Delphi里面的,Delphi已經被淘汰了。而MFC被列在第一位,其他商業庫基本沒聽說過,可見MFC是唯一的知名商業庫,已經打敗了其他商業庫一統天下了。
    而其中並沒有列出win32,可以說把win32和MFC混為一談也沒什么不可以。既然混為一談的話,那么也就是說這些東西都是建立在win32的基礎上,那么剛剛說的小公司的商業庫就不能說是界面庫的競爭者了,而Alberl說的這些小公司指的是國內所謂DirectUI的公司,從上述列表來看,都是以平台來做比較的,而那些DirectUI公司都沒有自己的平台,都是建立在win32的基礎上,所以根本都沒資格排到這里來。所以這些DirectUI公司,其實可以和BCG、XTP這些公司並為一列,那就是說他們不是平台,而是建立在win32這個平台上的一堆庫而已。
    BCG、XTP都稱自己是控件庫公司,建立在win32或者MFC之上;而天朝公司一向喜歡故弄玄虛,炒作概念,號稱是一個界面平台,搞得好像他們有自己的平台一樣,其實他們還是建立在win32的平台上,還是要靠微軟,還是windows編程。而所謂的適用於多種編程語言,並不是他們的庫有多么NB,因為只要是標准的dll,就可以被任何支持dll的語言調用,但在他們的宣傳中,讓人感覺就是:好像dll本身不能被多種語言調用一樣,好像是被他們改進之后才有這個功能一樣o(╯□╰)o。
    好吧,商業公司中當然是BCG、XTP最為著名啦,他們都是建立在win32或者MFC之上,作為一個輔助而已。
windows開源庫
    雖然上面列舉了上百款開源庫,並且很多都是跨平台的,但除了QT在windows上闖出了名氣以外,其他幾個還是只能在linux稱王。不得不說微軟的產品線做的非常完善,不然早就被linux那一堆跨平台打垮了。也不得不說windows的占有率非常之高,導致很多公司只做windows平台,壓根不需考慮linux,所以那些所謂的跨平台對很多公司真的是一點吸引力都沒有!(智能手機大量流行之后除外,也就是2011年之后)
    其實呢,這些界面庫在國外應該是夠用啦,看看國外那些殺毒軟件,在國內比起來簡直是土鱉界面,但在國外卻是比較好看的界面。像MSN、GTalk、Skype,界面也是一般般啦,用用MFC、自繪控件、商業庫(BCG、XTP),也是很容易做出來的。不過MSN是DirectUI,國內火爆的炒作DirectUI也提到了MSN,其實微軟技術這么牛,平台都是自己做的,技術根本就不是問題啦,所以微軟的某個東西用的什么技術成功了,不代表我們就能成功,我們能和微軟去比么...  那說說GTalk、Skype吧,不過Alberl沒安裝過着兩款應用,所以無從說起,還請網友們提供測評信息~O(∩_∩)O~ 
    那再說說火狐系列吧,從火狐瀏覽器、Thunderbird等一系列火狐產品,都是用的自主開發的 XUL,並且效果都不錯! 那我們也去用XUL? 不過Alberl也不知道有沒有其他公司用XUL,還請網友們提供信息。並且XUL是人家自己開發的,有問題了隨時可以解決。咱們要是出了問題,找誰解決,去哪找資料?
    看來windows下的界面庫還真是windows一統天下了,還真得靠win32提供的消息機制了。不過好消息還是有的,即使要靠win32平台,也有很多不錯的界面庫。並且還有更多的不靠win32平台的開源庫。由於本節只是介紹C++ Native界面庫,所以Web界面庫以及依賴win32的界面庫將在下一個教程中介紹~O(∩_∩)O~
    需要提醒的是,Alberl並沒有一一去對比上面列舉的上百款界面庫,只是挑了一些著名的庫做介紹,並且介紹也 都是道聽途說的,沒有親自驗證,還請各位網友對Alberl的介紹持懷疑態度,如果有哪位網友對其中的界面庫有過深入的了解, 希望能提供一些信息。
    最后感嘆一下:哎,怎么老外動不動就自己開發框架呀,怎么咱們動不動就到處找別人的框架呀o(╯□╰)o
 
==================================================

#23樓[樓主] 2013-11-04 11:47 Alberl  

@baita00
引用看了大神的教程,真的不錯,學習了很多東西,^_^。
這節教程里,大神好像在找曲線控件,是嗎?大神有什特殊需求,兄弟可以給你定制cchart,作為學習你教程的答謝,呵呵。


這里只是對比界面庫哦~
曲線控件我一直用codeproject上的那幾個:

1、功能最強大,但是很多bug,需要自己修改,目前用的這個
http://www.codeproject.com/Articles/1993/Scientific-charting-control

2、最穩定,功能也能滿足大部分需求,已維護7年
http://www.codeproject.com/Articles/14075/High-speed-Charting-Control

3、最炫,有Alpha通道,很多功能都不錯,用在項目里從未崩潰過
http://www.codeproject.com/Articles/317712/An-MFC-Chart-Control-with-Enhanced-User-Interface

以上作者都是MVP,從業十年以上,並且有些連續很多年都是MVP。

在國內的開源庫中,大神的曲線控件確實算得上第一,鑒於大神已經堅持到了3.0,這個在國內也是很少見了,所以我看好大神,因為開源庫最重要的是維護。

如果大神有心繼續為開源做貢獻的話,除了上述開源庫之外,還有JAVA的JFreeChart、.Net也有一款很好的開源庫。
只有C++被晾到了一邊,所以大神的這個工作還是很有意義的,還有各種商業庫功能也很強大,而且有XX版,所以希望大神在繼續做控件的時候能夠考慮到這些因素。

建議大神可以去codeproject發表一篇文章,看看老外們的反響~O(∩_∩)O~
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM