vs2017c语言图像界面库,C語言中在VS2017中構建圖形界面基礎知識點

本文详细介绍了TurboC图形库的initgraph函数及其参数,包括设置图形驱动和显示模式,以及如何通过detectgraph进行硬件检测。同时讲解了图形环境的初始化、关闭以及bar3d函数用于绘制三维条形图。此外,还讨论了rand和srand函数在生成随机数时的作用,以及如何使用它们来实现颜色的随机变化。最后提到了Windows多媒体API的DLL文件winmm.dll以及playsound函数的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.initgraph函數(講解)轉自:https://blog.youkuaiyun.com/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 //使用圖形初始化函數設置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

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.youkuaiyun.com/github_37287822/article/details/77392130

頭文件:

(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函數

頭文件:

定義函數: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.youkuaiyun.com/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 庫函數詳解

轉自:http://blog.youkuaiyun.com/chenyiming_1990/article/details/8682552

兩個類型:

time_t:表示距離 UTC 時間 1970-01-01 00:00:00 的秒數。也叫做日歷時,類型是  long

clock_t: 只用於程序計時,貌似其他的沒它什么事。

struct tm:通常用於存儲本地時。

五.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值