linux下c语言绘图库_Linux 下的图形库介绍
在進(jìn)行Linux下的圖形系統(tǒng)編程時,我們常常會遇到以下這些概念:
Framebuffer,?X11,?SDL,DFB,?miniGUI,?OpenGL,QT,?GTK,KDE,?GNOME等等。
一、Linux?圖形領(lǐng)域的基礎(chǔ)設(shè)施1.1?X?Window
X?Window從邏輯上分為三層:X?Server、X?Client和X協(xié)議。
最底層的X?Server(X服務(wù)器)主要處理輸入/輸出信息并維護(hù)相關(guān)資源,它接受來自鍵盤、鼠標(biāo)的操作并將它交給X?Client(X客戶端)作出反饋,而由X?Client傳來的輸出信息也由它來負(fù)責(zé)輸出;
最上層的X?Client則提供一個完整的GUI界面,負(fù)責(zé)與用戶的直接交互(KDE、GNOME都是一個X?Client)。
X協(xié)議則是銜接X?Server與X?Client的通訊協(xié)議,它的任務(wù)是充當(dāng)這兩者的溝通管道。盡管UNIX廠商采用相同的X?Window,但終端的X?Client并不相同。
XFree86是X?Window系統(tǒng)的一個開源的實(shí)現(xiàn)。它主要運(yùn)行于Unix以及類Unix操作系統(tǒng)上。XFree86在顯示硬件(鼠標(biāo)、鍵盤以及顯卡)與桌面環(huán)境(也就是窗口管理器)之間提供了一個Client/Server接口。
1.2?SVGALib
SVGALib是Linux下的底層圖形庫,也是Linux系統(tǒng)中最早出現(xiàn)的非X圖形支持庫,它支持標(biāo)準(zhǔn)的VGA圖形模式和一些其他的模式,SVGALib的缺點(diǎn)是程序必須以root權(quán)限登錄,并且它是基于圖形卡的,所以不是所有的硬件都支持它。
自從framebuffer這個孿生姐妹誕生后,許多軟件由只支持SVGALib變?yōu)橥瑫r支持兩者,甚至一些流行的高層函數(shù)庫如QT?和GTK只支持Framebuffer,作為一個老的圖形支持庫,SVGALib目前的應(yīng)用范圍越來越小,尤其是在?Linux?內(nèi)核增加了FrameBuffer驅(qū)動支持之后。
1.3?FrameBuffer
FrameBuffer是出現(xiàn)在Linux?2.2.xx內(nèi)核當(dāng)中的一種驅(qū)動程序接口。這種接口將顯示設(shè)備抽象為幀緩沖區(qū)。用戶可以將它看成是顯示內(nèi)存的一個映像,將其映射到進(jìn)程地址空間之后,就可以直接對顯存進(jìn)行讀寫操作,而寫操作可以立即反映在屏幕上。該驅(qū)動程序的設(shè)備文件一般是/dev/fb0、/dev/fb1?等等。
在應(yīng)用程序中,一般通過將FrameBuffer設(shè)備映射到進(jìn)程地址空間的方式
來使用,比如下面的程序就打開/dev/fb0設(shè)備,并通過mmap系統(tǒng)調(diào)用進(jìn)行地址映射,隨后用memset將屏幕清空(這里假設(shè)顯示模式是1024x766-8位色模式線性內(nèi)存模式):
FrameBuffer設(shè)備還提供了若干ioctl命令,通過這些命令,可以獲得顯示
設(shè)備的一些固定信息(比如顯示內(nèi)存大小)、與顯示模式相關(guān)的可變信息(比如分辨率、象素結(jié)構(gòu)、每掃描線的字節(jié)寬度),以及偽彩色模式下的調(diào)色板信息等等。
FrameBuffer實(shí)際上只是一個提供顯示內(nèi)存和顯示芯片寄存器從物理內(nèi)存映
射到進(jìn)程地址空間中的設(shè)備。所以,對于應(yīng)用程序而言,如果希望在FrameBuf
之上進(jìn)行圖形編程,還需要完成其他許多工作。FrameBuffer?就像一張畫布,用什么樣子的畫筆,如何畫畫,還需要你自己動手完成。
1.4?LibGGI
LibGGI試圖建立一個一般性的圖形接口,而這個抽象接口連同相關(guān)的輸入(鼠標(biāo)、鍵盤、游戲桿等)抽象接口一起,可以方便地運(yùn)行在X?Window、SVGALib、FrameBuffer等等之上。建立在LibGGI之上的應(yīng)用程序,不需重新編譯,就可以在上述這些底層圖形接口上運(yùn)行。但不知何故,LibGGI的發(fā)展幾乎停滯。
二、Linux?圖形領(lǐng)域的高級函數(shù)庫2.1?Xlib及其他相關(guān)函數(shù)庫在X?Window系統(tǒng)中進(jìn)行圖形編程時,可以選擇直接使用Xlib。Xlib實(shí)際上是對底層X協(xié)議的封裝,可通過該函數(shù)庫進(jìn)行一般的圖形輸出。如果你的X?Server支持DGA,則可以通過DGA擴(kuò)展直接訪問顯示設(shè)備,從而獲得加速支持。對一般用戶而言,由于Xlib的接口太原始而且復(fù)雜,因此一般的圖形程序選擇其他高級一些的圖形庫作為基礎(chǔ)。比如GTK、QT?等等。這兩個函數(shù)庫同時還是一些高級的圖形用戶界面的支持函數(shù)庫。由于種種原因,GTK、QT等函數(shù)庫存在龐大、占用系統(tǒng)資源多的問題,不太適合在嵌入式系統(tǒng)中使用。這時,你可以選擇使用?FLTK,這是一個輕量級的圖形函數(shù)庫,但它的主要功能集中在用戶界面上,提供了較為豐富的控件集。2.2?SDL
SDL(Simple?DirectMedia?Layer)是一個跨平臺的多媒體游戲支持庫。其中包含了對圖形、聲音、游戲桿、線程等等的支持,目前可以運(yùn)行在許多平臺上,其中包括?X?Window、X?Window?with?DGA、Linux?FrameBuffer控制臺、Linux?SVGALib,以及Windows?DirectX、BeOS?等等。因?yàn)镾DL是專門為游戲和多媒體應(yīng)用而設(shè)計(jì)開發(fā),所以它對圖形的支持非常優(yōu)秀,尤其是高級圖形能力,比如Alpha混和、透明處理、YUV覆蓋、Gamma?校正等等。而且在SDL環(huán)境中能夠非常方便地加載支持OpenGL的Mesa庫,從而提供對二維和三維圖形的支持。可以說,SDL是編寫跨平臺游戲和多媒體應(yīng)用的最佳平臺,也的確得到了廣泛應(yīng)用。相關(guān)信息,可參閱?http://www.libsdl.org/。2.3?Allegro
Allegro是一個專門為x86平臺設(shè)計(jì)的游戲圖形庫。最初的Allegro運(yùn)行在?DOS環(huán)境下,而目前可運(yùn)行在Linux?FrameBuffer控制臺、Linux?SVGALib、X?Window等系統(tǒng)上。Allegro提供了一些豐富的圖形功能,包括矩形填充和樣條曲線生成等等,而且具有較好的三維圖形顯示能力。由于Allegro的許多關(guān)鍵代碼是采用匯編編寫的,所以該函數(shù)庫具有運(yùn)行速度快、資源占用少的特點(diǎn)。然而,Allegro也存在如下缺點(diǎn):1)對線程的支持較差。Allegro的許多函數(shù)是非線程安全的,不能同時在兩個以上的線程中使用。2)對硬件加速能力的支持不足,在設(shè)計(jì)上沒有為硬件加速提供接口。有關(guān)?Allegro?的進(jìn)一步信息,可參閱http://www.allegro.cc/。2.4?Mesa3D
Mesa3D是一個兼容OpenGL規(guī)范的開放源碼函數(shù)庫,是目前Linux上提供專業(yè)三維圖形支持的惟一選擇。Mesa3D同時也是一個跨平臺的函數(shù)庫,能夠運(yùn)行在X?Window、X?Window?with?DGA、BeOS、Linux?SVGALib?等平臺上。2.5?DirectFB
DirectFB是專注于Linux?FrameBuffer硬件加速的一個圖形庫,并試圖建立一個兼容GTK的嵌入式GUI系統(tǒng)。它以可裝載函數(shù)庫的形式提供對加速?FrameBuffer驅(qū)動程序的支持。目前,該函數(shù)庫正在開發(fā)之中(最新版本?0.9.97),詳情可見?http://www.directfb.org/。
三、面向嵌入式Linux系統(tǒng)的圖形用戶界面3.1?MicoroWindows/NanoX
MicroWindows(http://microwindows.censoft.com/)是一個開放源碼的項(xiàng)目,目前由美國Century?Software公司主持開發(fā)。該項(xiàng)目的開發(fā)一度非常活躍,國內(nèi)也有人參與了其中的開發(fā),并編寫了GB2312等字符集的支持。但在?Qt/Embedded發(fā)布以來,該項(xiàng)目變得不太活躍,并長時間停留在0.89Pre7版本。可以說,以開放源碼形勢發(fā)展的MicroWindows項(xiàng)目,已基本停滯。MicroWindows是一個典型的基于客戶/服務(wù)器體系結(jié)構(gòu)的GUI系統(tǒng),基本分為三層。最底層是面向圖形輸出和鍵盤、鼠標(biāo)或觸摸屏的驅(qū)動程序;中間層提供底層硬件的抽象接口,并進(jìn)行窗口管理;最高層分別提供兼容于X?Window和?Windows?CE(Win32?子集)的API。該項(xiàng)目的主要特色在于提供了類似X的客戶/服務(wù)器體系結(jié)構(gòu),并提供了相對完善的圖形功能,包括一些高級的功能,比如Alpha混合,三維支持,TrueType?字體支持等。但需要注意的是,MicroWindows的圖形引擎存在許多問題,可以歸納如下:1)無任何硬件加速能力。2)圖形引擎中存在許多低效算法,同時未經(jīng)任何優(yōu)化。比如在直線或者圓弧繪圖函數(shù)中,存在低效的逐點(diǎn)判斷剪切的問題。3)代碼質(zhì)量較差。由于該項(xiàng)目缺少一個強(qiáng)有力的核心代碼維護(hù)人員,因此代碼質(zhì)量參差不齊,影響整體系統(tǒng)穩(wěn)定性。這也是MicroWindows長時間停留在?0.89Pre7?版本上的原因。MicroWindows?采用MPL條款發(fā)布(該條款基本類似?LGPL?條款)。3.2?OpenGUI
OpenGUI(http://www.tutok.sk/fastgl/)在Linux系統(tǒng)上存在已經(jīng)很長時間了。最初的名字叫FastGL,只支持256色的線性顯存模式,但目前也支持其他顯示模式,并且支持多種操作系統(tǒng)平臺,比如?MS-DOS、QNX?和Linux等等,不過目前只支持x86硬件平臺。OpenGUI也分為三層。最低層是由匯編編寫的快速圖形引擎;中間層提供了圖形繪制API,包括線條、矩形、圓弧等,并且兼容于?Borland的BGI?API。第三層用C++編寫,提供了完整的GUI對象集。OpenGUI采用LGPL條款發(fā)布。OpenGUI比較適合于基于x86平臺的實(shí)時系統(tǒng),可移植性稍差,目前的發(fā)展也基本停滯。3.3?Qt/Embedded
Qt/Embedded是著名的Qt庫開發(fā)商TrollTech(http://www.trolltech.com/)發(fā)布的面向嵌入式系統(tǒng)的Qt版本。因?yàn)镼t是KDE等項(xiàng)目使用的GUI支持庫,所以有許多基于Qt?的X?Window程序可以非常方便地移植到Qt/Embedded版本上。因此,自從Qt/Embedded以GPL條款形勢發(fā)布以來,就有大量的嵌入式Linux開發(fā)商轉(zhuǎn)到了Qt/Embedded系統(tǒng)上。比如韓國的Miz?公司,臺灣省的某些嵌入式Linux應(yīng)用開發(fā)商等等。不過,在筆者看來,Qt/Embedded還有一些問題值得開發(fā)者注意:1)目前,該系統(tǒng)采用兩種條款發(fā)布,其中包括GPL條款。對函數(shù)庫使用GPL條款,意味著其上的應(yīng)用需要遵循GPL條款。當(dāng)然了,如果要開發(fā)商業(yè)程序,TrollTech也允許你采用另外一個授權(quán)條款,這時,就必須向TrollTech交納授權(quán)費(fèi)用了。2)Qt/Embedded是一個C++函數(shù)庫,盡管Qt/Embedded聲稱可以裁剪到最少?630K,但這時的Qt/Embedded庫已經(jīng)基本上失去了使用價值。低的程序效率、大的資源消耗也對運(yùn)行Qt/Embedded的硬件提出了更高的要求。3)Qt/Embedded庫目前主要針對手持式信息終端,因?yàn)閷τ布铀僦С值膮T乏,很難應(yīng)用到對圖形速度、功能和效率要求較高的嵌入式系統(tǒng)當(dāng)中,比如機(jī)頂盒、游戲終端等等。4)Qt/Embedded提供的控件集風(fēng)格沿用了PC風(fēng)格,并不太適合許多手持設(shè)備的操作要求。5)Qt/Embedded的結(jié)構(gòu)過于復(fù)雜,很難進(jìn)行底層的擴(kuò)充、定制和移植,尤其是那個用來實(shí)現(xiàn)signal/slot機(jī)制的著名的moc文件。因?yàn)樯鲜鲞@些原因,目前所見到的Qt/Embedded?的運(yùn)行環(huán)境,幾乎是清一色基于StrongARM的iPAQ。注:目前,Qt/Embedded已經(jīng)增加了對DirectFB驅(qū)動的支持,因此具有了圖形加速能力,其性能也大大地得到提高。
3.4?MiniGUI
MiniGUI(http://www.minigui.org/)是由許多自由軟件開發(fā)人員支持的一個自由軟件項(xiàng)目(遵循?LGPL?條款發(fā)布),其目標(biāo)是為基于Linux?的實(shí)時嵌入式系統(tǒng)提供一個輕量級的圖形用戶界面支持系統(tǒng)。該項(xiàng)目自?1998?年底開始到現(xiàn)在,已歷經(jīng)3年多的開發(fā)過程。到目前為止,已經(jīng)非常成熟和穩(wěn)定。目前,已經(jīng)正式發(fā)布了穩(wěn)定版本?1.0.9,并且開始了新版本系列的開發(fā),即?MiniGUI?Version?1.1.x,該系列的正式版也即將發(fā)布。在MiniGUI幾年的發(fā)展過程中,有許多值得一提的技術(shù)創(chuàng)新點(diǎn),正是由于這些技術(shù)上的創(chuàng)新,才使得?MiniGUI?更加適合實(shí)時嵌入式系統(tǒng);而且?MiniGUI?的靈活性非常好,可以應(yīng)用在包括手持設(shè)備、機(jī)頂盒、游戲終端等等在內(nèi)的各種高端或者低端的嵌入式系統(tǒng)當(dāng)中。這些技術(shù)創(chuàng)新包括:1)圖形抽象層。圖形抽象層對頂層?API?基本沒有影響,但大大方便了?MiniGUI?應(yīng)用程序的移植、調(diào)試等工作。目前包含三個圖形引擎,SVGALib、LibGGI?以及直接基于?Linux?FrameBuffer?的?Native?Engine,利用?LibGGI?時,可在?X?Window?上運(yùn)行?MiniGUI?應(yīng)用程序,并可非常方便地進(jìn)行調(diào)試。與圖形抽象層相關(guān)的還有輸入事件的抽象層。MiniGUI?現(xiàn)在已經(jīng)被證明能夠在基于?ARM、MIPS、StrongARM?以及?PowerPC?等的嵌入式系統(tǒng)上流暢運(yùn)行。2)多字體和多字符集支持。這部分通過設(shè)備上下文(DC)的邏輯字體(LOGFONT)實(shí)現(xiàn),不管是字體類型還是字符集,都可以非常方便地進(jìn)行擴(kuò)充。應(yīng)用程序在啟動時,可切換系統(tǒng)字符集,比如?GB、BIG5、EUCKR、UJIS。利用?DrawText?等函數(shù)時,可通過指定字體而獲得其他字符集支持。對于一個窗口來說,同時顯示不同語種的文字是可能的。MiniGUI?的這種字符集支持不同于傳統(tǒng)通過?UNICODE?實(shí)現(xiàn)的多字符集支持,這種實(shí)現(xiàn)更加適合于嵌入式系統(tǒng)。
3)兩個不同架構(gòu)的版本。最初的?MiniGUI?運(yùn)行在?PThread?庫之上,這個版本適合于功能單一的嵌入式系統(tǒng),但存在系統(tǒng)健壯性不夠的缺點(diǎn)。在?0.9.98?版本中,我們引入了?MiniGUI-Lite?版本,這個版本在提高系統(tǒng)健壯性的同時,通過一系列創(chuàng)新途徑,避免了傳統(tǒng)?C/S?結(jié)構(gòu)的弱點(diǎn),為功能復(fù)雜的嵌入式系統(tǒng)提供了一個高效、穩(wěn)定的?GUI?系統(tǒng)。在?MiniGUI?1.1.0?版本的開發(fā)中,我們參照?SDL?和?Allegro?的圖形部分,重新設(shè)計(jì)了圖形抽象層,并增強(qiáng)了圖形功能,同時增強(qiáng)了?MiniGUI-Lite?版本的某些特性。這些特性包括:1)MiniGUI-Lite?支持層的概念。同一層可容納多個能夠同時顯示的客戶程序,并平鋪在屏幕上顯示。2)新的?GAL?能夠支持硬件加速能力,并能夠充分使用顯示內(nèi)存;新?GAL?之上的新?GDI?接口得到進(jìn)一步增強(qiáng)。新的?GDI?接口可以支持?Alpha?混和、透明位塊傳輸、光柵操作、YUV覆蓋、Gamma?校正,以及高級圖形功能(橢圓、多邊形、樣條曲線)等等。MiniGUI?新版本在圖形方面的增強(qiáng)和提高,將大大擴(kuò)展它的應(yīng)用領(lǐng)域,希望能夠?qū)η度胧?Linux?上的多媒體應(yīng)用、游戲開發(fā)提供支持。縱觀嵌入式?Linux?系統(tǒng)上的各種圖形系統(tǒng)方案,我們發(fā)現(xiàn),許多圖形系統(tǒng)(如?Qt/Embedded?和?MicoroWindows),只注重手持設(shè)備上的需求,卻不太注重其他應(yīng)用領(lǐng)域的需求,而其他許多需要圖形支持的嵌入式?Linux?系統(tǒng)卻需要許多獨(dú)特的、高級的圖形功能,而不僅僅是圖形用戶界面。為此,在接下來的開發(fā)中,我們還將在如下領(lǐng)域繼續(xù)開發(fā)?MiniGUI:1)提供運(yùn)行在?MiniGUI上的?JAVA?虛擬機(jī)?AWT?組件的實(shí)現(xiàn)。2)提供?MiniGUI?上的OpenGL?實(shí)現(xiàn)。3)提供類QT?控件集的C++?封裝。3)提供窗口/控件風(fēng)格主題支持。4)在?MiniGUI-Lite?當(dāng)中增加對矢量字體的支持。
四、Linux/Unix系統(tǒng)圖形界面原理簡單介紹及GTK、QT、GNOME和KDE的關(guān)系
最近IT新聞出現(xiàn)較多的就是諾基亞的新版手機(jī)操作系統(tǒng)Symbian?3。今天看到在cnbeta上看大家為這個系統(tǒng)爭論不休,其焦點(diǎn)也逐漸轉(zhuǎn)移到到塞班新系統(tǒng)的核心技術(shù):Qt?。評論區(qū)大家唇槍舌戰(zhàn),不過很多人連基本概念都沒搞明白,今天正好無事可做,稍微整理下X11,GTK,QT,GNOME,KDE的區(qū)別與聯(lián)系。
一、在這之前你必須要了解:
1.linux是基于Unix的
2.塞班Symbian、蘋果max?os等系統(tǒng)的最底層也是unix
3.linux本身沒有圖形界面,linux現(xiàn)在的圖形界面的實(shí)現(xiàn)只是linux下的應(yīng)用程序
實(shí)現(xiàn)的
4.Xwindow、Xfree中的X是協(xié)議,不是具體的某個軟件
5.linux圖形界面層次關(guān)系:linux本身-->X服務(wù)器窗口管
理器(綜合桌面環(huán)境)-->X應(yīng)用程序
二、linux和windows下界面系統(tǒng)的區(qū)別:
圖形界面并不是linux的一部分?,linux只是一個基于命令行的操作系統(tǒng),linux和Xfree的關(guān)系就相當(dāng)于當(dāng)年的DOS和?WINDOWS3.0一樣,windows3.0不是獨(dú)立的操作系統(tǒng),它只是DOS的擴(kuò)充,是DOS下的應(yīng)用程序級別的系統(tǒng),不是獨(dú)立的操作系統(tǒng),同樣?XFree只是linux下的一個應(yīng)用程序而已.不是系統(tǒng)的一部分,但是X的存在可以方便用戶使用電腦.WINDOWS95及以后的版本就不一樣了,他們?的圖形界面是操作系統(tǒng)的一部分,圖形界面在系統(tǒng)內(nèi)核中就實(shí)現(xiàn)了,沒有了圖形界面windows就不成為windows了,但linux卻不一樣,沒有圖形界面linux還是linux,很多裝linux的WEB服務(wù)器就根本不裝X服務(wù)器。這也WINDOWS和linux的重要區(qū)別之一。
三、關(guān)于linux兩大圖形界面KDE和Gnome
KDE早于Gnome出現(xiàn),但是KDE基于的Qt是不遵循GPL開源協(xié)議的,Qt是一個跨平臺的C++圖形用戶界面庫?,它是挪威TrollTech公司的產(chǎn)品(2008年底被NOKIA收購)。?Qt具有優(yōu)良的跨平臺特性(支持Windows、Linux、各種UNIX、OS390和QNX等)、面向?qū)ο髾C(jī)制以及豐富的API,同時也可支持2D/3D渲染和OpenGL?API。在當(dāng)時的同類圖形用戶界面庫產(chǎn)品中,Qt的功能最為強(qiáng)大.但底層的基礎(chǔ)?Qt卻是一個不遵循GPL的商業(yè)軟件,這就給KDE上了一道無形的枷鎖并帶來可能的法律風(fēng)險。一大批自由程序員對KDE項(xiàng)目的決定深為不滿,它們認(rèn)為利用非自由軟件開發(fā)違背了GPL的精神。于是這些GNU的狂熱信徒兵分兩路:其中一部分人去制作Harmonny,試圖重寫出一套兼容Qt的替代品,這個項(xiàng)目雖然技術(shù)上相對簡單,但卻沒有獲得KDE項(xiàng)目的支持;另一路人馬則決定重新開發(fā)一套名為“GNOME(GNU?Network?Object?Environment)”的圖形環(huán)境來替代KDE。
GNOME選擇完全遵循GPL的GTK圖形界面庫為基礎(chǔ),因此我們也一般將GNOME和KDE兩大陣營稱為GNOME/GTK和?KDE/Qt。與Qt基于C++語言不同,GTK采用較傳統(tǒng)的C語言?,雖然C語言不支持面向?qū)ο笤O(shè)計(jì),看起來比較落后,但當(dāng)時熟悉C語言的開發(fā)者遠(yuǎn)遠(yuǎn)多于熟悉C++的開發(fā)者。加之GNOME/GTK完全遵循GPL版權(quán)公約,吸引了更多的自由程序員參與。
四、linux/unix基于X?window的圖形顯示處理原理
X?Window從邏輯上分為三層:最底層的X?Server(X服務(wù)器)主要處理輸入/輸出信息并維護(hù)相關(guān)資源,它接受來自鍵盤、鼠標(biāo)的操作并將它交給X?Client(X客戶端)作出反饋,而由X?Client傳來的輸出信息也由它來負(fù)責(zé)輸出;最外層的X?Client則提供一個完整的GUI界面,負(fù)責(zé)與用戶的直接交互(KDE、Gnome都是一個X?Client),而銜接X?Server與X?Client的就是“X?Protocol(X通訊協(xié)議)”、它的任務(wù)是充當(dāng)這兩者的溝通管道。盡管UNIX廠商采用相同的X?Window,但終端的X?Client并不相同。
五、Qt、GTK?和KDE、GNOME的關(guān)系
簡單來說:為了方便開發(fā)人員編寫X?clients,就有了Xlib來封裝X協(xié)議;Xlib還不夠方便,于是就有了qt和gtk,它們提供了很多窗口控件(widgets)。
為了方便用戶?,就出現(xiàn)了gnome和kde等桌面管理系統(tǒng)。一般來說,linux用戶看到的界面就是其中之一了。gnome用的是gtk庫,kde用的是qt庫。
總結(jié)
以上是生活随笔為你收集整理的linux下c语言绘图库_Linux 下的图形库介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python上下键不能用_python退
- 下一篇: python周志_Python几周学习内