C語言中在VS2017中構建圖形介面基礎知識點
一.initgraph函式(講解)轉自:https://blog.csdn.net/zhao_fu_lu/article/details/23961111
1.initgraph():初始化圖形系統
(1) 函式原型:void far initgraph(int far *graphdriver,int far *graphmode,char far *pathtodriver);
graphdriver:上漲指向圖形驅動序號變數的指標
graphmode:在graphdriver確定後,指向圖形顯示模式序號變數的指標
pathtodriver:表示存放圖形驅動檔案的路徑
(2) 標頭檔案:graphics.h
不同的顯示器介面卡有不同的圖形解析度(即使是同一個顯示器介面卡,在不同模式下也有不同的解析度)
在未作圖之前,必須根據顯示器介面卡種類將顯示器設定成為某種圖形格式。
在未設定圖形格式之前,微機系統預設螢幕為文字格式(80列,25行字元模式),此時所有的圖形函式都不能工作。
設定螢幕為圖形模式,可以用下列圖形化初始函式:void far initgraph(int far *gdriver,int far *gmode,char *path);
gdriver和gmode表示圖形驅動.顯示模式,path是指圖形驅動程式所在的目錄路徑。
圖形驅動程式由Turbo C出版商提供,副檔名為.BGI。根據不同的圖形介面卡有不同的圖形驅動程式。
(3)初始化繪圖環境
HWWD initgraph(
int width;//繪製環境的寬度
int height;//繪製環境的高度
int flag=NULL//繪製環境的樣式,預設為NULL,可以為以下值
);
值 NOCLOSE NOMINIMIZE SHOWCONSOLE
含義 禁用繪圖環境的關閉按鈕 禁用繪圖環境的最小化按鈕 保留原控制檯視窗
2.Turbo C提供了一個自動檢測顯示器硬體的函式,其呼叫格式為:
void far detectgraph(int *gdriver,*gmode);其中圖形驅動和顯示模式與上面相同
#include <graphics.h>//使用圖形初始化函式設定VGA高解析度圖形模式
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;
}
註釋:bar3d三維條形圖 用法:void far bar3d{int left,int top,//三維空間矩形長條圖正面的左上角座標
int right,int bottom,//三維空間矩形長條圖正面的右下角圖示
int depth,//三維空間矩形長條圖的深度(即陰影)
int topflag//設定是否繪製三維空間長條圖的頂部
};
//自動進行硬體測試後進行圖形初始化
#include <graphics.h>
int main(){
int gdriver, gmode; /int gdriver=DETECT,gmode;
detectgraph(&gdriver, &gmode); /*自動測試硬體*/printf("the graphics driver is %d, mode is %d\n", gdriver,
gmode); /*輸出測試結果*/
getch();
initgraph(&gdriver, &gmode, "c:\\tc"); initgraph(&gdriver,&gmode,"c:\\tc");
/* 根據測試結果初始化圖形*/
bar3d(10, 10, 130, 250, 20, 1);
getch();
closegraph();
return 0;
}
上述程式中先對圖形顯示器自動檢測,然後再用圖形初始化函式進行初始化設定,但Turbo C提供了一種更簡單的方法,即用gdriver=DETECT語句後再跟initgraph()函式就行了。採用了這種方法後,上例可改為:上述註解
另外,Turbo C提供了退出圖形狀態的函式closegraph(),其呼叫格式為void far closegraph();呼叫該函式後可退出圖形雜狀態而進入文字格式(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;
}
二.在繪製圖形色彩時候遇到的隨機函式:rand函式(線性同餘法)(產生隨機數)和srand(初始化隨機種子)
轉自:https://blog.csdn.net/github_37287822/article/details/77392130
標頭檔案:<stdlib.h>
(1)定義函式:int rand(void)
函式功能:產生隨機數
函式說明:因為rand的內部實現是用線性同餘法做的,他不是真的隨機數,只不過是因為其週期特別長,所以,在一定的範圍裡可看成是隨機的。
rand()會返回一隨機數值,範圍在0至RAND_MAX 間。
在呼叫此函式產生隨機數前,必須先利用srand()設好隨機數種子,如果未設隨機數種子,rand()在呼叫時會自動設隨機數種子為1。
返回值: 返回0至RAND_MAX之間的隨機整數值,RAND_MAX的範圍最少是在32767之間(int),即雙位元組(16位數)。若用unsigned int 雙位元組是65535,四位元組是4294967295的整數範圍。且0-RAND_MAX每個數字被選中的機率是相同的。
rand()產生的是假隨機數字,每次執行時是相同的。若要不同,以不同的值來初始化它.初始化的函式就是srand()。
(2)srand函式
標頭檔案:<stdlib.h>
定義函式:void srand(unsigned int seed);
函式說明:srand()用來設定rand()產生隨機數時的隨機數種子。引數seed必須是個整數,通常可以利用getpid()或者time(0)的返回值來當作seed。如果每次seed都設相同值,rand()所產生的隨機數值每次就會一樣。
三.
(1)
DLL 檔案: winmm 或者 winmm.dll
DLL 名稱: Windows Multimedia API
描述:
winmm.dll是Windows多媒體相關應用程式介面,用於低檔的音訊和遊戲手柄。
#pragma comment( comment-type ,["commentstring"] )
comment-type是一個預定義的識別符號,指定註釋的型別,應該是compiler,exestr,lib,linker之一
commentstring是一個提供為comment-type提供附加資訊的字串。
playsound的具體用法轉自:https://blog.csdn.net/ccx_john/article/details/12494129
(2)
RGB(red,green,blue)
RGB函式就是(1*R+256*G+65536*B)
文字:settextcolor(YELLOW);(顏色)
settextstyle(,,L”字型“);//高,寬
outtextsy(x,y,L”“); / /out(輸出).text(文字).指定座標輸出文字
四.#include<time.h> 庫函式詳解
轉自: http://blog.csdn.net/chenyiming_1990/article/details/8682552
兩個型別:
time_t:表示距離 UTC 時間 1970-01-01 00:00:00 的秒數。也叫做日曆時,型別是 long
clock_t: 只用於程式計時,貌似其他的沒它什麼事。
struct tm:通常用於儲存本地時。
五.