C和C + +編程資源

分享/書籤
自定義搜索

C語言中的圖形

張貼於2008年9月10日

C語言中的圖形

我們會限制我們討論 C語言中的圖形到16位C編程和MS DOS環境。 在C程序首先你需要初始化圖形驅動程序在計算機上。 這是使用方法的initgraph提供graphics.h庫。 在接下來的幾頁中我們將詳細討論 graphics.h庫。 圖書館的重要職能 graphic.h將 discuees細節和方案將提供樣品,以顯示權力的C編程語言。

圖形模式的初始化

首先,我們要調用 initgraph函數,將 intialize圖形模式在計算機上。 initigraph具有以下原型。

 無效 initgraph(遠 * graphdriver詮釋,詮釋遠 * graphmode,焦炭遠 * pathtodriver); 

Initgraph初始化圖形系統通過加載圖形驅動程序從磁盤(或驗證註冊驅動程序),然後把系統進入

圖形 mode.Initgraph還重置所有的圖形設置(顏色,調色板,當前位置,視等),以它們的默認值,然後重置graphresult為 0。

* graphdriver

整數,指定要使用的圖形驅動程序。 你可以給 graphdriver採用恆定值的graphics_drivers枚舉類型。

* graphmode

整數,指定初始圖形模式(除非* graphdriver =檢測)。 如果* graphdriver = DETECT之外,initgraph套* graphmode最高分辨率可檢測到的驅動程序。 你可以給一個值* graphmode採用恆定的graphics_modes枚舉類型。

* pathtodriver

指定的目錄路徑 initgraph查找圖形驅動程序(*. BGI的)第一次。

  1. 如果他們不存在,initgraph看起來在當前目錄。
  2. 如果pathtodriver為 null,該驅動程序文件必須在當前目錄中。

* graphdriver和* graphmode必須設置為有效graphics_drivers和graphics_mode值或您將獲得不可預知的結果。 (唯一的例外是graphdriver =檢測。)

後打電話給 initgraph,* graphdriver設置為當前圖形驅動程序,以及* graphmode設置為當前的圖形模式。 你可以告訴 initgraph使用特定的圖形驅動程序和方式,或自動檢測附加的視頻適配器在運行時選擇相應的驅動程序。 如果你告訴 initgraph自動檢測,它調用 detectgraph選擇一個圖形驅動程序和模式。

通常情況下,initgraph加載圖形驅動程序分配內存的驅動程序(通過 _graphgetmem),然後載入適當的。巴克萊國際投資管理文件從 disk.As替代這個充滿活力的裝載方案,您可以鏈接的圖形驅動程序文件(或數個,其中)直接到你的可執行程序文件。

下面是一個示例程序初始化圖形模式在C語言。

  #包括<graphics.h>
 #包括<stdlib.h>
 #包括<stdio.h>
 #包括鐨勫
國際主要(無效)

 / *要求自動檢測 * /
  詮釋 gdriver = DETECT之外,gmode,錯誤代碼;
 / *初始化圖形模式* /
   initgraph(&gdriver和gmode,“”);
 / *讀取結果初始化* /
  錯誤代碼 = graphresult();
如果(錯誤代碼!=神交)/ * 1出錯 * /
  
    輸出(“圖形錯誤:%s \ N”的,grapherrormsg(錯誤代碼));
    輸出(“按任意鍵停止:”);
     getch();
    出口(1); / *返回錯誤代碼 * /
  
 / *畫一條線 * /
  行(0,0,getmaxx(),getmaxy());
 / *清理* /
   getch();
   closegraph();
  返回0;
 

圖形編程的C語言是在簡短的討論,提供了以初學者。

  / *示例程序來繪製一個圓 * /
 #包括<graphics.h>
 #包括鐨勫
主要()

  詮釋廣東 = DETECT之外,克;
   initgraph(&gd的,與通用汽車 ,""); / *初始化圖形模式* /
  圓(一五零一五零一零零);
   getch();
   closegraph(); / *還原的一部開拓創新的屏幕模式* /

 / *程序結束 * / 

一般情況下,銀幕 ü查看DOS是在文本模式,這意味著它的意思是文字。 而對於圖形 ü需要初始化圖形模式。 而要做到這一點 ü需要包括graphics.h?。

 圓(x坐標,y坐標,半徑); 

該命令需要一個圈,這意味著 X坐標和Y坐標軸垂直,這意味著橫軸。 而最後一個是圓的半徑。 closegraph();

有了這一功能的屏幕模式將仍留在圖形模式時 ü出來,到DOS u將看到一個不同的屏幕,這不是在文本模式。

  / *一個方案,繪製空間星星* /
 #包括<graphics.h>
主要()

  詮釋廣東 = DETECT之外,克;
  詮釋我的x,y;
   initgraph(&gd的,與通用汽車 ,"");
  線(0,0,640,0);
  線(0,0,0,480);
  線(639,0,639,480);
  線(639,479,0,479);
  對(我= 0;我<= 1000;我+ +)
  
     x =蘭特()%639;
    為 y =蘭特()%480;
     putpixel(的x,y,15);
  
   getch();
   closegraph();

 / *程序結束 * / 
 / *這裡一個示例程序來說明如何使用鋼筋是用於視覺統計* /#包括<graphics.h>的main()(詮釋廣東= DETECT之外,通用汽車,馬克斯克斯,馬克斯,的x,y,按鈕; initgraph(與廣東,與通用汽車,"");線(八百零一億五千零二十萬零一百五十);線(80,150,80,50); settextstyle(1,HORIZ_DIR,1); outtextxy(100153,“<- X軸”); settextstyle(1,VERT_DIR,1 ); outtextxy(60,50,“<- Y軸”);巴(一○○一○○一二○一五○)巴(一千三百零一億二千零一十五萬零一百五十〇 ); getch(); closegraph();) 

頁數:[頁- 1] [頁面- 2] [頁面- 3] [頁面- 4]

標籤:

就像你看到的?

成為一個常客訂閱! 你將是第一個知道,當我們添加更多的偉大的職位不是這樣。 任何一方加入了RSS源電子郵件更新今天!

有137個評論這一職務。 您可以按照任何反應,此項目通過2.0飼料 。您可以跳過至年底,並留下一個答复引用從您自己的網站。

  • Junjun 說:

    我需要做一個節目,就像一個計算選票的投票制度... ...並計算得分決賽,並顯示它們在數據文本文件...使用類和對象任何人能幫助我...

  • Ankit 說:

    / /這是一個零和遊戲交叉(零凱塔)在C + +。

    無效 show_game_box();
    焦米[3] [3];
    無效的主要()

    詮釋磷,Q有
    焦答;
    法院“”“\噸 \ tCROSS&諾特遊戲 \ N”的;


    期(p = 1; p <= 3;的p + +)

    為組(q = 1變 Q <= 3變 Q + +)

    米[圖] [問與答 ]='';


    詮釋 i和j,總結 = 0;
    而(金額 <10)

    如果(總結 == 0)
    show_game_box();
    法院“”“\ ñ \ ñ \ nPlayer 1 is'0的文件\ n”;
    法院“”“遊戲者1的轉 \ N”的;
    法院<>我;
    法院<>焦耳;
    為(;(我> 3)| |(十<1 )||(' X的==米[i]的研究[J ])||(' 0'==米[i]的研究[J]);)

    法院“”“對不起,你輸入錯誤的選擇 \ N”的;
    法院“”“請輸入您的再次選擇 \ N”的;
    法院<>我;
    法院<>焦耳;

    米[i]的研究[J] = '0';
    總之 + +;
    show_game_box();
    如果((米[1] [1] == '0 ')&&(米[1] [1] ==米[1] [2 ])&&(米[1] [1] ==米[1] [3]))

    法院“”“恭喜!!!!!!!!!! \ N”的;
    法院“”“1贏得了比賽的球員 \ N”的;
    打破;

    如果((米[2] [1] == '0 ')&&(米[2] [1] ==米[2] [2 ])&&(米[2] [1] ==米[2] [3]))

    法院“”“恭喜!!!!!!!!!! \ N”的;
    法院“”“1贏得了比賽的球員 \ N”的;
    打破;

    如果((米[3] [1] == '0 ')&&(米[3] [1] ==米[3] [2 ])&&(米[3] [1] ==米[3] [3]))

    法院“”“恭喜!!!!!!!!!! \ N”的;
    法院“”“1贏得了比賽的球員 \ N”的;
    打破;

    如果((米[1] [1] == '0 ')&&(米[1] [1] ==米[2] [2 ])&&(米[1] [1] ==米[3] [3]))

    法院“”“恭喜!!!!!!!!!! \ N”的;
    法院“”“1贏得了比賽的球員 \ N”的;
    打破;

    如果((米[1] [3] == '0 ')&&(米[1] [3] ==米[2] [2 ])&&(米[1] [1] ==米[3] [1]))

    法院“”“恭喜!!!!!!!!!! \ N”的;
    法院“”“1贏得了比賽的球員 \ N”的;
    打破;

    如果((米[1] [1] == '0 ')&&(米[1] [1] ==米[2] [1 ])&&(米[1] [1] ==米[3] [1]))

    法院“”“恭喜!!!!!!!!!! \ N”的;
    法院“”“1贏得了比賽的球員 \ N”的;
    打破;

    如果((米[1] [2] == '0 ')&&(米[1] [2] ==米[2] [2 ])&&(米[1] [2] ==米[3] [2]))

    法院“”“恭喜!!!!!!!!!! \ N”的;
    法院“”“1贏得了比賽的球員 \ N”的;
    打破;

    如果((米[1] [3] == '0 ')&&(米[1] [3] ==米[2] [3 ])&&(米[1] [1] ==米[3] [3]))

    法院“”“恭喜!!!!!!!!!! \ N”的;
    法院“”“1贏得了比賽的球員 \ N”的;
    打破;

    如果(總結 == 9)

    法院“”“\噸 \ tHURRAY !!!!!遊戲已經結束 \ N”的;
    法院“”“\噸 \應用科學研究組織一台WINS \ N”的;
    法院“”“這場比賽是畫 \ N”的;
    打破;

    法院“”“\ ñ \ ñ \ nPlayer 2 is'X的文件\ n”;
    法院“”“玩家2的轉 \ N”的;
    法院<>我;
    法院<>焦耳;
    為(;(我> 3)| |(十<1 )||(' X的==米[i]的研究[J ])||(' 0'==米[i]的研究[J]);)

    法院“”“對不起,你輸入錯誤的選擇 \ N”的;
    法院“”“請輸入您的再次選擇 \ N”的;
    法院<>我;
    法院<>焦耳;

    米[i]的研究[J] =的'X';
    總之 + +;
    show_game_box();
    如果((米[1] [1] ==的'X ')&&(米[1] [1] ==米[1] [2 ])&&(米[1] [1] ==米[1] [3]))

    法院“”“恭喜!!!!!!!!!! \ N”的;
    法院“”“2贏得了比賽的球員 \ N”的;
    打破;

    如果((米[2] [1] ==的'X ')&&(米[2] [1] ==米[2] [2 ])&&(米[2] [1] ==米[2] [3]))

    法院“”“恭喜!!!!!!!!!! \ N”的;
    法院“”“2贏得了比賽的球員 \ N”的;
    打破;

    如果((米[3] [1] ==的'X ')&&(米[3] [1] ==米[3] [2 ])&&(米[3] [1] ==米[3] [3]))

    法院“”“恭喜!!!!!!!!!! \ N”的;
    法院“”“2贏得了比賽的球員 \ N”的;
    打破;

    如果((米[1] [1] ==的'X ')&&(米[1] [1] ==米[2] [2 ])&&(米[1] [1] ==米[3] [3]))

    法院“”“恭喜!!!!!!!!!! \ N”的;
    法院“”“2贏得了比賽的球員 \ N”的;
    打破;

    如果((米[1] [3] ==的'X ')&&(米[1] [3] ==米[2] [2 ])&&(米[1] [1] ==米[3] [1]))

    法院“”“恭喜!!!!!!!!!! \ N”的;
    法院“”“2贏得了比賽的球員 \ N”的;
    打破;

    如果((米[1] [1] ==的'X ')&&(米[1] [1] ==米[2] [1 ])&&(米[1] [1] ==米[3] [1]))

    法院“”“恭喜!!!!!!!!!! \ N”的;
    法院“”“2贏得了比賽的球員 \ N”的;
    打破;

    如果((米[1] [2] ==的'X ')&&(米[1] [2] ==米[2] [2 ])&&(米[1] [2] ==米[3] [2]))

    法院“”“恭喜!!!!!!!!!! \ N”的;
    法院“”“2贏得了比賽的球員 \ N”的;
    打破;

    如果((米[1] [3] ==的'X ')&&(米[1] [3] ==米[2] [3 ])&&(米[1] [1] ==米[3] [3]))

    法院“”“恭喜!!!!!!!!!! \ N”的;
    法院“”“2贏得了比賽的球員 \ N”的;
    打破;

    如果(總結 == 9)

    法院“”“\噸 \ tHURRAY遊戲已經結束 \ N”的;
    法院“”“\噸 \應用科學研究組織一台WINS \ N”的;
    法院“”“\噸 \ t加強聯網遊戲繪製 \ N”的;
    打破;


    法院<>答;
    而)((答=='Ÿ ')||(答=='Ÿ'));
    系統(“暫停”);
    getch();

    無效 show_game_box()

    法院“”“\ ñ 1 2 3 \ N”的<<恩德;
    法院“”“1”<<米[1] [1 ]<<"|"<<米[1] [2 ]<<"|"<<米[1] [3] <<恩德;
    法院“”“-|-|- \ N”的;
    法院“”“2”<<米[2] [1 ]<<"|"<<米[2] [2 ]<<"|"<<米[2] [3] <<恩德;
    法院“”“-|-|- \ N”的;
    法院“”“3”<<米[3] [1 ]<<"|"<<米[3] [2 ]<<"|"<<米[3] [3] <<“\ ñ \ ñ \ N“的;

  • 撒其布 說:

    阿米特Srivastava撰文:
    你可以捕獲鼠標移動使用MFC在VC + +以下方式。 創建一個標準的MFC exe文件和文檔查看將有一班進行鼠標事件即OnMouseMove(),OnLButtonDown(),您可以得到在任何位置,鼠標功能。 這兩個函數接受兩個參數(UINT nFlags,口岸系統點)。 而在點對象將鼠標位置(x,y)和你可以讓他們輕鬆。

    @拉吉:
    你可以在這裡得到一個計算器 progam。
    http://www.mycplus.com/free-utilities/scientific-calculator/

    @ Gcablay_18:
    這裡有教程可以在C + +創建類。
    http://www.mycplus.com/tutorials/cplusplus-programming-tutorials/classes-2/

    @維內特:
    這個函數關閉圖形模式,並返回它的位置是在initgraph函數被調用。 Closegraph功能釋放所有的資源,佔領了圖形系統像memry,字體,司機等...
    你可以了解更多有關圖形功能在這裡
    http://www.mycplus.com/featured-articles/c-language-graphics-library-reference-part-1/


留下一個回复

您必須登錄後才能發表評論。