日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

關(guān)于C語言的圖形編程

 戰(zhàn)神之家 2014-04-28

發(fā)表于 2010-6-7 21:19 | 來自  51CTO網(wǎng)頁

[只看他] 樓主

老是被同學(xué)們問一些關(guān)于C語言初學(xué)時的圖形編程問題,感覺有點代表性,這里統(tǒng)一做個回答。
一家之言哈,歡迎拍磚。
問題:
1、為什么VC下找不到BGI文件?
2、我按照書上寫的把程序輸入,編譯時發(fā)現(xiàn)找不到graphics.h文件
3、VC是不是不支持圖形開發(fā)???
4、... ...
問這類問題的同學(xué)還很多,總的來說,我覺得這些同學(xué)應(yīng)該屬于初學(xué)C語言,對于語言、操作系統(tǒng)、平臺的概念還不清楚,因此會問這類問題。
首先,糾正一點,C語言就是C語言,是負(fù)責(zé)編制程序?qū)崿F(xiàn)計算的,真正的C語言,是不帶任何平臺相關(guān)特點的,而圖形、聲音,是平臺相關(guān),因為不是每個計算平臺都有圖形界面,因此,最原始的C,甚至是C++語言,是不帶任何圖形開發(fā)接口的。
就我本人而言,也犯過類似的迷糊,最開始我們在Apple II計算機上開發(fā),由于其Basic語言是和計算機綁定在一起的,硬件也有圖形開發(fā)接口,使用匯編語言也能直接開發(fā),因為,我就想當(dāng)然地認(rèn)為,計算機一定可以繪圖的。
后來學(xué)習(xí)了計算機圖形學(xué),才發(fā)現(xiàn)不是這么一回事,圖形終端,是單獨的一門大學(xué)問,和計算機基本上是割裂的,在以前大中小型機的時代,一臺計算機可以帶字符終端,如電傳打字機,也可以帶圖形終端,不過,有圖形終端的一般叫圖形工作站,呵呵,很拉風(fēng)的。
記得90年我在石油物探局玩了一次Sun Sparc 490圖形工作站,我當(dāng)時都迷了,90年,人家音頻、視頻接口就是標(biāo)配,XWindows比我們現(xiàn)在的XP什么的好看多了,按鈕全是圓弧帶陰影的,硬件實現(xiàn)實三維計算。記得當(dāng)年是瞞著巴統(tǒng)進(jìn)來的,一臺120萬美金,確實是好東東,20年前的配置,到現(xiàn)在都不見得落后多少。
呵呵,說遠(yuǎn)了,主要是請大家清楚一點,計算機里面還是可以細(xì)分的,圖形系統(tǒng)是圖形系統(tǒng),計算機是計算機,我們大家一般都是從微型計算機PC開始學(xué)習(xí)編程的,再加上現(xiàn)在Windows系統(tǒng)這么流行,可能有點想當(dāng)然,以為圖形顯示卡是一臺計算機的標(biāo)配,呵呵,不一定的。
好,話說回來,大家可能還有個誤區(qū),以為C語言,C++語言,以及Java這些東東,是PC機的語言,其實也不是的,計算機硬件是硬件,軟件是軟件,C和C++都有自己的標(biāo)準(zhǔn)協(xié)會,Java有Sun公司在維護(hù),因此,這些語言的產(chǎn)生和發(fā)展,其實和PC平臺沒有太多關(guān)系。
最起碼,C就是為Unix而生的,而Unix一般是大中小型機的標(biāo)準(zhǔn)操作系統(tǒng),Windows最開始提供的是Pascal格式的api,大家查查Win32API,很多很古老的函數(shù)接口,前面都要有PASCAL修飾,表示這個接口符合PASCAL標(biāo)準(zhǔn)。甚至,目前我們用的匈牙利命名法,其實是Pascal的命名法,發(fā)明者是個匈牙利人,應(yīng)該是Windows api的主要制定者之一。
因此,大家可以想象,C和C++語言的基本庫,本來就不可能綁定任何一個平臺,一定只會利用各個平臺共有的特點來完成設(shè)計,而圖形系統(tǒng),大家可以想象,各個平臺都不一樣,很難有個通用的庫,所以,真實的C語言里面,其實是不帶圖形啊,聲音啊這類庫的,這些都是各個硬件、操作系統(tǒng)軟件開發(fā)商,自行提供的。
VC是個特例,VC準(zhǔn)確的講,應(yīng)該不是一門C和C++的教學(xué)型語言,它更像Windows平臺定制的一個實用性C和C++語言。因此,他天生就有對Windows的集成性,自然支持Win32API中關(guān)于GUI的圖形函數(shù),因此,VC是可以繪圖的。只要你有一個窗口,就可以再窗口DC上繪圖。如果使用DirectX的話,甚至可以利用虛擬的表面,直接訪問顯存,實現(xiàn)高速繪圖,開發(fā)游戲。
不過這里還得倒回去說一點,最開始PC平臺使用DOS操作系統(tǒng),是沒有C語言的,當(dāng)時有家公司叫做Borland,看中這個市場,推出了TurboC系列語言,后來又發(fā)展到Borland C++系列,大家不要跟我說不知道啊,Delphi知道不?
當(dāng)時DOS平臺一般都有圖形卡,但卡的類型很多,而DOS顯然又沒有Windows這樣,提供統(tǒng)一的api接口訪問,因此,需要進(jìn)行圖形繪制的廠商,一般需要自己根據(jù)各個卡型開發(fā)自己的驅(qū)動程序,以前有段時間,臺灣的游戲很流行,很多游戲一上來就讓玩家選擇顯卡,如EGA、VGA等等,就是在選擇驅(qū)動程序。
驅(qū)動程序其實不復(fù)雜,就是封裝各個圖形卡的差異性,對上提供統(tǒng)一的api接口供上層函數(shù)調(diào)用,驅(qū)動一般都是匯編和C語言開發(fā)的。目前有很多工作崗位,招嵌入式開發(fā)工程師,主要就是寫驅(qū)動??匆姏],嵌入式由于沒有Windows這個統(tǒng)一的界面,也需要寫驅(qū)動。
這里就要夸夸比爾蓋茨了,他的Windows系統(tǒng)其實意義重大,不僅僅起到了圖形界面操作系統(tǒng)的用途,它實際上整合了PC平臺的驅(qū)動標(biāo)準(zhǔn),各個硬件廠商以后只要給Windows寫驅(qū)動就好了,不需要針對每個應(yīng)用分別寫驅(qū)動,如AutoCAD的驅(qū)動和游戲的驅(qū)動顯然就不是一碼事,這樣硬件廠商節(jié)約很多人力,自然說好。
軟件廠商呢,只要針對Windows平臺開發(fā),就自然而然支持所有符合Windows規(guī)范的硬件,也無需自己每種硬件都采購一套,分別寫驅(qū)動,這節(jié)約了大量的人力和無力,因此,Windows最成功的,我認(rèn)為還不是這個圖形界面,它整合了驅(qū)動標(biāo)準(zhǔn),為業(yè)界節(jié)約了大量的成本,這是它的成功之處,值得稱道。
好了,說了這么多,再回到Borland,由于它做TurboC的時代,還是DOS操作系統(tǒng),沒有Windows這么方便,但是PC平臺的C語言,要是不支持圖形繪制,市場會大打折扣,大家不買啊,因此,他必須讓他的C語言支持圖形,但是,圖形卡有很多啊,因此,他就開發(fā)出自己的圖形驅(qū)動標(biāo)準(zhǔn),叫做BGI,這是一種文件格式,一般安裝一套TurboC,里面會帶一堆這個文件,就是針對各個不同顯卡的驅(qū)動。
而上層的程序,使用graphics.h這個頭文件,調(diào)用標(biāo)準(zhǔn)BGI的api調(diào)用,即可實現(xiàn)圖形開發(fā),至于針對各個不同的圖形卡,api中有查詢接口,告訴你選擇哪個BGI而已。
OK,問上面問題的同學(xué)們明白沒?
不過話說回來,DOS畢竟是淘汰的東東,目前已經(jīng)是Windows的世界,最起碼Linux的市場都比DOS大,因此,建議同學(xué)們自學(xué)C語言,還是看看書的出版年代,問問題的同學(xué)顯然對著一本TurboC的書在看,這很麻煩,學(xué)出來的東西一來不好做實驗,二來也沒有市場,現(xiàn)在估計沒有哪家公司還在使用TurboC開發(fā)。建議大家還是從VC學(xué)起吧。
VC下大家就不用問了,Windows是圖形操作系統(tǒng),一定有圖形函數(shù)的,查查Win32API函數(shù)庫,看看MFC,都能找到一堆。
這里簡單提示幾點:
1、Windows下,一切都是窗口,我們看到的一個軟件界面,如VC,如IE,是無數(shù)個窗口構(gòu)成的,甚至Dialog上每個按鈕,都是窗口。
2、Windows下,只要是窗口,就一定有句柄,Handle,這是每個窗口的靈魂,任何針對窗口的操作,幾乎都是從Handle開始的。
3、一般說來,窗口分兩類,可顯示的和不可顯示的,大多數(shù)是可顯示的。只要可顯示,就可以利用GetWindowDC,從Handle獲得DC。
4、DC到手,天下我有。呵呵,拿到DC,大家就想怎么畫就怎么畫了??梢栽O(shè)定畫筆,刷子,字體,可以用畫點,畫線的函數(shù),可以填充,裁剪,等等,GUI圖形雖然效率偏低,做高速游戲動畫可能不夠,不過,就大家目前做的圖形試驗,寫個物理教學(xué)題材的軟件,做個化學(xué)實驗軟件等等,足夠了。
OK,大家還有問題嗎?
本文出自 51CTO.COM技術(shù)博客

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多