国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

關(guān)于C語言中圖形模式的問題

2019-11-17 05:47:21
字體:
供稿:網(wǎng)友
              關(guān)于C語言中圖形模式的問題
相信大家碰到這種事,自己編好的圖形程序,發(fā)給好友的機(jī)器上居然運(yùn)行不了!這是為什么呢?我通過找了大量資料找到了原因:
  . 我們在知道顯示器的情況下,可以使用圖形初始化函數(shù)設(shè)置高分辨率圖形模式(這里假設(shè)是VGA):
     #include <graphics.h>
     int main()
     {
          int gdriver, gmode;
          gdriver=VGA;
          gmode=VGAHI;
          initgraph(&gdriver, &gmode, "c:/tc");
          bar3d(100, 100, 300, 250, 50, 1);       /*畫一長方體*/
          getch();
          closegraph();
          return 0;
     }   .有時(shí)編程者并不知道所用的圖形顯示器適配器種類,或者需要將編寫的程序用于不同圖形驅(qū)動器,Turbo C提供了一個(gè)自動檢測顯示器硬件的函數(shù),其調(diào)用格式為:
     void far detectgraph(int *gdriver, *gmode);
    其中g(shù)driver和gmode的意義與上面相同。
 
  .自動進(jìn)行硬件測試后進(jìn)行圖形初始化
     #include <graphics.h>
     int main()
     {
          int gdriver, gmode;
          detectgraph(&gdriver, &gmode);     /*自動測試硬件*/
                           gmode);       /*輸出測試結(jié)果*/
          getch();
          initgraph(&gdriver, &gmode, "c:/tc");
                               /* 根據(jù)測試結(jié)果初始化圖形*/
          bar3d(10, 10, 130, 250, 20, 1);
          getch();
          closegraph();
          return 0;
      }   . 上例程序中先對圖形顯示器自動檢測,然后再用圖形初始化函數(shù)進(jìn)行初始化設(shè)置,但Turbo C提供了一種更簡單的方法, 即用gdriver= DETECT 語句后再跟initgraph()函數(shù)就行了。采用這種方法后, 上例可改為:
 
     #include <graphics.h>
     int main()
     {
          int gdriver=DETECT, gmode;
          initgraph(&gdriver, &gmode, "c:/tc");
          bar3d(50, 50, 150, 30, 1);
          getch();
          closegraph();
          return 0;
     }
  . 另外, Turbo C提供了退出圖外形態(tài)的函數(shù)closegraph(), 其調(diào)用格式為:
     void far closegraph(void);
    調(diào)用該函數(shù)后可退出圖外形態(tài)而進(jìn)入文本方式(Turbo C 默認(rèn)方式), 并釋放用于保存圖形驅(qū)動程序和
字體的系統(tǒng)內(nèi)存。
 .我們可不可以獨(dú)立圖形運(yùn)行程序的建立?請看下面:
    Turbo C對于用initgraph()函數(shù)直接進(jìn)行的圖形初始化程序, 在編譯和鏈接時(shí)并沒有將相應(yīng)的驅(qū)動程序(*.BGI)裝入到執(zhí)行程序, 當(dāng)程序進(jìn)行到intitgraph()語句時(shí), 再從該函數(shù)中第三個(gè)形式參數(shù)char *path中所規(guī)定的路徑中去找相應(yīng)的驅(qū)動程序。若沒有驅(qū)動程序, 則在C:TC中去找, 如C:TC中仍沒有或TC不存在,將會出現(xiàn)錯(cuò)誤:
     BGI Error: Graphics not initialized (use 'initgraph')
  因此, 為了使用方便, 應(yīng)該建立一個(gè)不需要驅(qū)動程序就能獨(dú)立運(yùn)行的可執(zhí)行圖形程序,Turbo C中規(guī)定用下述步驟(這里以EGA、VGA顯示器為例):
    1. 在C:TC子目錄下輸入命令:BGIOBJ EGAVGA
    此命令將驅(qū)動程序EGAVGA.BGI轉(zhuǎn)換成EGAVGA.OBJ的目標(biāo)文件。
    2. 在C:TC子目錄下輸入命令:TLIB LIBGRAPHICS.LIB+EGAVGA
    此命令的意思是將EGAVGA.OBJ的目標(biāo)模塊裝到GRAPHICS.LIB庫文件中。
    3. 在程序中initgraph()函數(shù)調(diào)用之前加上一句:
       registerbgidriver(EGAVGA_driver):
該函數(shù)告訴連接程序在連接時(shí)把EGAVGA的驅(qū)動程序裝入到用戶的執(zhí)行程序中。經(jīng)過上面處理,編譯鏈接后的執(zhí)行程序可在任何目錄或其它兼容機(jī)上運(yùn)行。假設(shè)已作了前兩個(gè)步驟,若再向例6中加 registerbgidriver()函數(shù)則變成:
    例:
     #include<stdio.h>
     #include<graphics.h>
     int main()
     {
         int gdriver=DETECT,gmode;
         registerbgidriver(EGAVGA_driver):  / *建立獨(dú)立圖形運(yùn)行程序 */
         initgraph( gdriver, gmode,"c:/tc");
         bar3d(50,50,250,150,20,1);
         getch();
         closegraph();
         return 0;
     }
    上例編譯鏈接后產(chǎn)生的執(zhí)行程序可獨(dú)立運(yùn)行。
   我用的是Trubo C v2.0,已經(jīng)完全通過,編出來的圖形程序,在任何一臺機(jī)器上都可以運(yùn)行!我的QQ:156301529,Email:rodgersnow@163.com假如大家能跟我共同探討C語言程序設(shè)計(jì),有什么意見或建議歡迎跟我聯(lián)系,我會很興奮的,必竟自己是個(gè)小菜鳥!呵呵.........謝謝您費(fèi)眼觀看.........


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 台州市| 高要市| 伊宁县| 定结县| 广河县| 南京市| 博罗县| 观塘区| 浦东新区| 东乡县| 阳东县| 墨竹工卡县| 巴南区| 深州市| 河间市| 新营市| 天全县| 讷河市| 工布江达县| 连南| 连江县| 大同市| 英山县| 镇宁| 玛纳斯县| 莒南县| 罗田县| 吴桥县| 中阳县| 镇安县| 大理市| 宜良县| 越西县| 扶绥县| 义马市| 湟中县| 莆田市| 巴彦淖尔市| 阜平县| 福清市| 卢氏县|