initgraph函式(講解)
功 能: 初始化圖形系統
函式原型: void far initgraph(int far *graphdriver, int far *graphmode,
char far *pathtodriver);graphdriver是上漲指向圖形驅動序號變數的指標;graphmode是在graphdriver選定後,指向圖形顯示模式序號變數的指標。pathtodriver表示存放圖形驅動檔案的路徑。
標頭檔案:graphics.h
★圖形模式的初始化★
不同的顯示器介面卡有不同的圖形解析度。即是同一顯示器介面卡, 在不同
模式下也有不同解析度。因此, 在螢幕作圖之前, 必須根據顯示器介面卡種類將
顯示器設定成為某種圖形模式, 在未設定圖形模式之前, 微機系統預設螢幕為文
本模式(80列, 25行字元模式), 此時所有圖形函式均不能工作。設定螢幕為圖形
模式, 可用下列圖形初始化函式:
void far initgraph(int far *gdriver, int far *gmode, char *path);
其中gdriver和gmode分別表示圖形驅動器和模式, path是指圖形驅動程式所
在的目錄路徑。有關圖形驅動器、圖形模式的符號常數及對應的解析度見表2。
圖形驅動程式由Turbo C出版商提供, 副檔名為.BGI。根據不同的圖形
介面卡有不同的圖形驅動程式。例如對於EGA、 VGA 圖形介面卡就呼叫驅動程式
EGAVGA.BGI。
表2. 圖形驅動器、模式的符號常數及數值
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
圖形驅動器(gdriver) 圖形模式(gmode)
─────────── ─────────── 色調 解析度
符號常數 數值 符號常數 數值
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
CGA 1 CGAC0 0 C0 320*200
CGAC1 1 C1 320*200
CGAC2 2 C2 320*200
CGAC3 3 C3 320*200
CGAHI 4 2色 640*200
───────────────────────────────────
MCGA 2 MCGAC0 0 C0 320*200
MCGAC1 1 C1 320*200
MCGAC2 2 C2 320*200
MCGAC3 3 C3 320*200
MCGAMED 4 2色 640*200
MCGAHI 5 2色 640*480
───────────────────────────────────
EGA 3 EGALO 0 16色 640*200
EGAHI 1 16色 640*350
───────────────────────────────────
EGA64 4 EGA64LO 0 16色 640*200
EGA64HI 1 4色 640*350
───────────────────────────────────
EGAMON 5 EGAMONHI 0 2色 640*350
───────────────────────────────────
IBM8514 6 IBM8514LO 0 256色 640*480
IBM8514HI 1 256色 1024*768
───────────────────────────────────
HERC 7 HERCMONOHI 0 2色 720*348
───────────────────────────────────
ATT400 8 ATT400C0 0 C0 320*200
ATT400C1 1 C1 320*200
ATT400C2 2 C2 320*200
ATT400C3 3 C3 320*200
ATT400MED 4 2色 320*200
ATT400HI 5 2色 320*200
───────────────────────────────────
VGA 9 VGALO 0 16色 640*200
VGAMED 1 16色 640*350
VGAHI 2 16色 640*480
───────────────────────────────────
PC3270 10 PC3270HI 0 2色 720*350
───────────────────────────────────
DETECT 0 用於硬體測試
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
例4. 使用圖形初始化函式設定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;
}
有時程式設計者並不知道所用的圖形顯示器介面卡種類, 或者需要將編寫的程式
用於不同圖形驅動器, Turbo C提供了一個自動檢測顯示器硬體的函式, 其呼叫
格式為:
void far detectgraph(int *gdriver, *gmode);
其中gdriver和gmode的意義與上面相同。
例5. 自動進行硬體測試後進行圖形初始化
#include <graphics.h>
int main()
{
int gdriver, gmode;
detectgraph(&gdriver, &gmode); /*自動測試硬體*/
printf("the graphics driver is %d, mode is %d\n", gdriver,
gmode); /*輸出測試結果*/
getch();
initgraph(&gdriver, &gmode, "c:\\tc");
/* 根據測試結果初始化圖形*/
bar3d(10, 10, 130, 250, 20, 1);
getch();
closegraph();
return 0;
}
上例程式中先對圖形顯示器自動檢測, 然後再用圖形初始化函式進行初始化
設定, 但Turbo C提供了一種更簡單的方法, 即用gdriver= DETECT 語句後再跟
initgraph()函式就行了。採用這種方法後, 上例可改為:
例6.
#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提供了退出圖形狀態的函式closegraph(), 其呼叫格式為:
void far closegraph(void);
呼叫該函式後可退出圖形狀態而進入文字方式(Turbo C 預設方式), 並釋放
用於儲存圖形驅動程式和字型的系統記憶體。
程式例:
#include "graphics.h"
#include "stdio.h"
int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
/* initialize graphics mode */
initgraph(&gdriver, &gmode, "");
/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* return with error code */
}
/* draw a line */
line(0, 0, getmaxx(), getmaxy());
/* clean up */
getch();
closegraph();
return 0;
}
initgraph
這個函式用於初始化繪圖環境。
HWND initgraph(
int width,
int height,
int flag = NULL
);
引數:
width
繪圖環境的寬度。
height
繪圖環境的高度。
flag
繪圖環境的樣式,預設為 NULL。可為以下值:
值 | 含義 |
---|---|
NOCLOSE | 禁用繪圖環境的關閉按鈕。 |
NOMINIMIZE | 禁用繪圖環境的最小化按鈕。 |
SHOWCONSOLE | 保留原控制檯視窗。 |
返回值:
建立的繪圖視窗的控制代碼。
示例:
以下區域性程式碼建立一個尺寸為 640x480 的繪圖環境:
initgraph(640, 480);
以下區域性程式碼建立一個尺寸為 640x480 的繪圖環境,同時顯示控制檯視窗:
initgraph(640, 480, SHOWCONSOLE);
以下區域性程式碼建立一個尺寸為 640x480 的繪圖環境,同時顯示控制檯視窗,並禁用關閉按鈕:
initgraph(640, 480, SHOWCONSOLE | NOCLOSE);
相關推薦
initgraph函式(講解)
函式名: initgraph() 功 能: 初始化圖形系統函式原型: void far initgraph(int far *graphdriver, int far *graphmode, char far *pathtodriver);graphdriver是
faster rcnn中損失函式(二)—— Smoooh L1 Loss的講解
1. 使用Smoooh L1 Loss的原因 對於邊框的預測是一個迴歸問題。通常可以選擇平方損失函式(L2損失)f(x)=x^2。但這個損失對於比較大的誤差的懲罰很高。 我們可以採用稍微緩和一點絕對損失函式(L1損失)f(x)=|x|,它是隨著誤差線性增長,而不是平方增長
faster rcnn中 損失函式(一)——softmax,softmax loss和cross entropy的講解
先理清下從全連線層到損失層之間的計算。來看下面這張圖,(非常好的圖)。 T類 N表示前一層特徵層flatten後的數字 fltten後的特徵 無限大小的T類 從0-1的T類向量
函式和常用模組【day04】:內建函式(十)
一、36-40 36、isinstance(object, classinfo) 功能:用於判斷,物件是否是某個類的例項 # s = "alex" # 物件,"alex" => str s = [11,11,11] # 用於判斷,物件是否是某個類的例項 r = isinsta
前後端分離業務邏輯常用封裝函式(一)
1.陣列去空: function clear_arr_trim(array) { for(var i = 0 ;i<array.length;i++){ if(array[i] == "" || (array[i] == null) || typeo
面向物件【day07】:解構函式(六)
二、解構函式 一、概述 解構函式,第一次聽說這個函式的名稱,那這個函式到底是幹嘛的呢?什麼才是解構函式吶? 定義:在例項銷燬的時候呼叫的函式 二、解構函式定義 2.1 定義 1
02.Java使用鍵盤輸入 && Java呼叫函式(方法)
一、Java使用鍵盤輸入 import java.util.Scanner; Scanner sc = new Scanner(System.in); int enterNumber = sc.nextInt(); 如果輸入字串: String str = sc.n
【BZOJ1432】函式(ZJOI2009)-思維
測試地址:函式 做法: 本題需要用到思維。 如果在 x x x座標為負無窮時,把函式從下到上編號為
學習JS的心路歷程-函式(一)
前幾天有間單提到該如何宣告函式及在Hositing中會發生什麼事,但是函式的奧妙不僅於此。 身為一個使用JS的工程師,我們一定要熟悉函式到比戀人還熟! 這幾天將會把函式逐一扒開跟各位一起探討其中的奧妙。 函式是頭等物件 這句話代表著函式與任何JS物件共存
學JS的心路歷程-函式(二)arguments
引數(argument)與函式引數(parameter) 在討論函式時,很多人都會把這兩個搞混,我自己也不例外。 雖然講錯別人也聽得懂,但是我們還是要搞清楚這兩個的定義到底是什麼! 引數是當我們呼叫函式時傳遞給它的值 引數是我們在函式定義中所列出的變數看完還是有點不懂?沒關係,上圖!
Python 函式(補充)
函式返回值: 函式並非總是直接顯示輸出,相反,它可以處理一些資料,並返回一個或一組值。函式返回的值被稱為返回值。在函式中,可使用return語句將值返回到呼叫函式的程式碼行。 返回值讓你能夠將程式的大部分繁重工作移到函式中去完成,從而簡化主程式。 返回簡單值: 下面來看一個函式,
邁向大神之路 day8 函式(一)……
檔案補充 操作檔案 讀寫 內部連結 read 一次讀取 readline 一行一行度 不知道在哪結束 readlines 一次讀取 修改檔案的原理 (檔案是不能修改的,實在一個檔案修改完成後刪除 原始檔 並改名) with open('1.txt',
常用的通訊模擬matlab函式(調製)
stem(Y) 將資料序列Y從x軸到資料值按照莖狀形式畫出,以圓圈終止。如果Y是一個矩陣,則將其 每一列按照分隔方式畫出。 stem(X,Y)在X的指定點處畫出資料序列Y. stem(…,‘filled’) 以實心的方式畫出莖稈。 stem(…,‘LINESPEC’) 按指定的線型
當case when then else end 語句遇上sum或count等統計函式(轉載)
轉載:https://blog.csdn.net/qq_18875541/article/details/69392355 事情是因為這樣了——我需要按2個維度來分組,求出按這2個維度分組的總數情況(count),但同時也需要在這2個維度下求出按不同條件得出的總數,這些不同條件下分別
函式(三)
看 《 深入理解es6》 一書,有些知識點沒有記錄下來。 但大部分的知識點記錄下來了。 // 函式的一個特性 function Person(name) {  
朱有鵬C語言高階---4.9.3--單鏈表--將建立節點的程式碼封裝成一個函式(2)
朱有鵬C語言高階---4.9.2--單鏈表--訪問單鏈表中各個節點的資料(1) 朱有鵬C語言高階---4.9.3--單鏈表--將建立節點的程式碼封裝成一個函式(2) 原始碼:4.9.3danlianbiao2.c #include &
尤拉函式(模板)
#include <iostream> #include <cmath> using namespace std; int oula(int n) { int ans=n; int i; for(i=2;i<=sqrt(n);i++) {
學JS的心路歷程-函式(五)箭頭函式
箭頭函式arrow function 為了能夠以更簡短的方式建立函式,ES6變推出了箭頭函式。 用說明的可能會不太懂,我們先拿之前的陣列排序例子來看: var arr = [2,1,6,12,3,77,100,4]; arr.sort(function(a,b){ return a
mysql儲存過程和函式(一)
儲存過程和函式是事先經過編譯並存儲在資料庫的一段sql語句集合,呼叫儲存過程和函式可以簡化應用程式開發人員的很多工作,減少資料在資料庫和應用伺服器之間的傳輸,對提高資料執行效率是有好處的。 儲存過程和函式的區別在於函式必須有返回值,而儲存過程卻沒有,儲存過程的引數可以使用IN,OUT,INOUT型別
Go程式設計基礎—函式(func)
https://blog.csdn.net/qq_22063697/article/details/74858264 函式是基本的程式碼塊,用於執行一個任務,是構成程式碼執行的邏輯結構。 在Go語言中,函式的基本組成為:關鍵字func、函式名、引數列表、返回值、函式體和返回語句。 函