圖形和圖像函數(shù)包含在graphics.h里面
十載的德化網(wǎng)站建設經驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。網(wǎng)絡營銷推廣的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調整德化建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)從事“德化網(wǎng)站設計”,“德化網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
(一) 像素函數(shù)
56. putpiel() 畫像素點函數(shù)
57. getpixel()返回像素色函數(shù)
(二) 直線和線型函數(shù)
58. line() 畫線函數(shù)
59. lineto() 畫線函數(shù)
60. linerel() 相對畫線函數(shù)
61. setlinestyle() 設置線型函數(shù)
62. getlinesettings() 獲取線型設置函數(shù)
63. setwritemode() 設置畫線模式函數(shù)
(三)、多邊形函數(shù)
64. rectangle() 畫矩形函數(shù)
65. bar() 畫條函數(shù)
66. bar3d() 畫條塊函數(shù)
67. drawpoly() 畫多邊形函數(shù)
(四)、 圓、弧和曲線函數(shù)
68. getaspectratio()獲取縱橫比函數(shù)
69. circle()畫圓函數(shù)
70. arc() 畫圓弧函數(shù)
71. ellipse()畫橢圓弧函數(shù)
72. fillellipse() 畫橢圓區(qū)函數(shù)
73. pieslice() 畫扇區(qū)函數(shù)
74. sector() 畫橢圓扇區(qū)函數(shù)
75. getarccoords()獲取圓弧坐標函數(shù)
(五)、 填充函數(shù)
76. setfillstyle() 設置填充圖樣和顏色函數(shù)
77. setfillpattern() 設置用戶圖樣函數(shù)
78. floodfill() 填充閉域函數(shù)
79. fillpoly() 填充多邊形函數(shù)
80. getfillsettings() 獲取填充設置函數(shù)
81. getfillpattern() 獲取用戶圖樣設置函數(shù)
(六)、圖像函數(shù)
82. imagesize() 圖像存儲大小函數(shù)
83. getimage() 保存圖像函數(shù)
84. putimage() 輸出圖像函數(shù)
四、圖形和圖像函數(shù)
對許多圖形應用程序,直線和曲線是非常有用的。但對有些圖形只能靠操作單個像素才能畫出。當然如果沒有畫像素的功能,就無法操作直線和曲線的函數(shù)。而且通過大規(guī)模使用像素功能,整個圖形就可以保存、寫、擦除和與屏幕上的原有圖形進行疊加。
(一) 像素函數(shù)
56. putpixel() 畫像素點函數(shù)
功能: 函數(shù)putpixel() 在圖形模式下屏幕上畫一個像素點。
用法: 函數(shù)調用方式為void putpixel(int x,int y,int color);
說明: 參數(shù)x,y為像素點的坐標,color是該像素點的顏色,它可以是顏色符號名,也可以是整型色彩值。
此函數(shù)相應的頭文件是graphics.h
返回值: 無
例: 在屏幕上(6,8)處畫一個紅色像素點:
putpixel(6,8,RED);
57. getpixel()返回像素色函數(shù)
功能: 函數(shù)getpixel()返回像素點顏色值。
用法: 該函數(shù)調用方式為int getpixel(int x,int y);
說明: 參數(shù)x,y為像素點坐標。
函數(shù)的返回值可以不反映實際彩色值,這取決于調色板的設置情況(參見setpalette()函數(shù))。
這個函數(shù)相應的頭文件為graphics.h
返回值: 返回一個像素點色彩值。
例: 把屏幕上(8,6)點的像素顏色值賦給變量color。
color=getpixel(8,6);
分類函數(shù),所在函數(shù)庫為ctype.h
int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否則返回0
int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或數(shù)字('0'-'9')
返回非0值,否則返回0
int isascii(int ch) 若ch是字符(ASCII碼中的0-127)返回非0值,否則返回0
int iscntrl(int ch) 若ch是作廢字符(0x7F)或普通控制字符(0x00-0x1F)
返回非0值,否則返回0
int isdigit(int ch) 若ch是數(shù)字('0'-'9')返回非0值,否則返回0
int isgraph(int ch) 若ch是可打印字符(不含空格)(0x21-0x7E)返回非0值,否則返回0
int islower(int ch) 若ch是小寫字母('a'-'z')返回非0值,否則返回0
int isprint(int ch) 若ch是可打印字符(含空格)(0x20-0x7E)返回非0值,否則返回0
int ispunct(int ch) 若ch是標點字符(0x00-0x1F)返回非0值,否則返回0
int isspace(int ch) 若ch是空格(' '),水平制表符('\t'),回車符('\r'),
走紙換行('\f'),垂直制表符('\v'),換行符('\n')
返回非0值,否則返回0
int isupper(int ch) 若ch是大寫字母('A'-'Z')返回非0值,否則返回0
int isxdigit(int ch) 若ch是16進制數(shù)('0'-'9','A'-'F','a'-'f')返回非0值,
否則返回0
int tolower(int ch) 若ch是大寫字母('A'-'Z')返回相應的小寫字母('a'-'z')
int toupper(int ch) 若ch是小寫字母('a'-'z')返回相應的大寫字母('A'-'Z')
數(shù)學函數(shù),所在函數(shù)庫為math.h、stdlib.h、string.h、float.h
int abs(int i) 返回整型參數(shù)i的絕對值
double cabs(struct complex znum) 返回復數(shù)znum的絕對值
double fabs(double x) 返回雙精度參數(shù)x的絕對值
long labs(long n) 返回長整型參數(shù)n的絕對值
double exp(double x) 返回指數(shù)函數(shù)ex的值
double frexp(double value,int *eptr) 返回value=x*2n中x的值,n存貯在eptr中
double ldexp(double value,int exp); 返回value*2exp的值
double log(double x) 返回logex的值
double log10(double x) 返回log10x的值
double pow(double x,double y) 返回xy的值
double pow10(int p) 返回10p的值
double sqrt(double x) 返回+√x的值
double acos(double x) 返回x的反余弦cos-1(x)值,x為弧度
double asin(double x) 返回x的反正弦sin-1(x)值,x為弧度
double atan(double x) 返回x的反正切tan-1(x)值,x為弧度
double atan2(double y,double x) 返回y/x的反正切tan-1(x)值,y的x為弧度
double cos(double x) 返回x的余弦cos(x)值,x為弧度
double sin(double x) 返回x的正弦sin(x)值,x為弧度
double tan(double x) 返回x的正切tan(x)值,x為弧度
double cosh(double x) 返回x的雙曲余弦cosh(x)值,x為弧度
double sinh(double x) 返回x的雙曲正弦sinh(x)值,x為弧度
double tanh(double x) 返回x的雙曲正切tanh(x)值,x為弧度
double hypot(double x,double y) 返回直角三角形斜邊的長度(z),
x和y為直角邊的長度,z2=x2+y2
double ceil(double x) 返回不小于x的最小整數(shù)
double floor(double x) 返回不大于x的最大整數(shù)
void srand(unsigned seed) 初始化隨機數(shù)發(fā)生器
int rand() 產生一個隨機數(shù)并返回這個數(shù)
double poly(double x,int n,double c[])從參數(shù)產生一個多項式
double modf(double value,double *iptr)將雙精度數(shù)value分解成尾數(shù)和階
double fmod(double x,double y) 返回x/y的余數(shù)
double frexp(double value,int *eptr) 將雙精度數(shù)value分成尾數(shù)和階
double atof(char *nptr) 將字符串nptr轉換成浮點數(shù)并返回這個浮點數(shù)
double atoi(char *nptr) 將字符串nptr轉換成整數(shù)并返回這個整數(shù)
double atol(char *nptr) 將字符串nptr轉換成長整數(shù)并返回這個整數(shù)
char *ecvt(double value,int ndigit,int *decpt,int *sign)
將浮點數(shù)value轉換成字符串并返回該字符串
char *fcvt(double value,int ndigit,int *decpt,int *sign)
將浮點數(shù)value轉換成字符串并返回該字符串
char *gcvt(double value,int ndigit,char *buf)
將數(shù)value轉換成字符串并存于buf中,并返回buf的指針
char *ultoa(unsigned long value,char *string,int radix)
將無符號整型數(shù)value轉換成字符串并返回該字符串,radix為轉換時所用基數(shù)
char *ltoa(long value,char *string,int radix)
將長整型數(shù)value轉換成字符串并返回該字符串,radix為轉換時所用基數(shù)
char *itoa(int value,char *string,int radix)
將整數(shù)value轉換成字符串存入string,radix為轉換時所用基數(shù)
double atof(char *nptr) 將字符串nptr轉換成雙精度數(shù),并返回這個數(shù),錯誤返回0
int atoi(char *nptr) 將字符串nptr轉換成整型數(shù), 并返回這個數(shù),錯誤返回0
long atol(char *nptr) 將字符串nptr轉換成長整型數(shù),并返回這個數(shù),錯誤返回0
double strtod(char *str,char **endptr)將字符串str轉換成雙精度數(shù),并返回這個數(shù),
long strtol(char *str,char **endptr,int base)將字符串str轉換成長整型數(shù),
并返回這個數(shù),
int matherr(struct exception *e)
用戶修改數(shù)學錯誤返回信息函數(shù)(沒有必要使用)
double _matherr(_mexcep why,char *fun,double *arg1p,
double *arg2p,double retval)
用戶修改數(shù)學錯誤返回信息函數(shù)(沒有必要使用)
unsigned int _clear87() 清除浮點狀態(tài)字并返回原來的浮點狀態(tài)
void _fpreset() 重新初使化浮點數(shù)學程序包
unsigned int _status87() 返回浮點狀態(tài)字
int chdir(char *path) 使指定的目錄path(如:"C:\\WPS")變成當前的工作目錄,成
功返回0
int findfirst(char *pathname,struct ffblk *ffblk,int attrib)查找指定的文件,成功
返回0
pathname為指定的目錄名和文件名,如"C:\\WPS\\TXT"
ffblk為指定的保存文件信息的一個結構,定義如下:
┏━━━━━━━━━━━━━━━━━━━━┓
┃struct ffblk ┃
┃{ ┃
┃ char ff_reserved[21]; /*DOS保留字*/ ┃
┃ char ff_attrib; /*文件屬性*/ ┃
┃ int ff_ftime; /*文件時間*/ ┃
┃ int ff_fdate; /*文件日期*/ ┃
┃ long ff_fsize; /*文件長度*/ ┃
┃ char ff_name[13]; /*文件名*/ ┃
┃} ┃
┗━━━━━━━━━━━━━━━━━━━━━┛
attrib為文件屬性,由以下字符代表
┏━━━━━━━━━┳━━━━━━━━━┓
┃FA_RDONLY 只讀文件┃FA_LABEL 卷標號 ┃
┃FA_HIDDEN 隱藏文件┃FA_DIREC 目錄 ┃
┃FA_SYSTEM 系統(tǒng)文件┃FA_ARCH 檔案 ┃
┗━━━━━━━━━┻━━━━━━━━━┛
例:
struct ffblk ff;
findfirst("*.wps",ff,FA_RDONLY);
int findnext(struct ffblk *ffblk) 取匹配finddirst的文件,成功返回0
void fumerge(char *path,char *drive,char *dir,char *name,char *ext)
此函數(shù)通過盤符drive(C:、A:等),路徑dir(\TC、\BC\LIB等),
文件名name(TC、WPS等),擴展名ext(.EXE、.COM等)組成一個文件名
存與path中.
int fnsplit(char *path,char *drive,char *dir,char *name,char *ext)
此函數(shù)將文件名path分解成盤符drive(C:、A:等),路徑dir(\TC、\BC\LIB等),
文件名name(TC、WPS等),擴展名ext(.EXE、.COM等),并分別存入相應的變量中.
int getcurdir(int drive,char *direc) 此函數(shù)返回指定驅動器的當前工作目錄名稱
drive 指定的驅動器(0=當前,1=A,2=B,3=C等)
direc 保存指定驅動器當前工作路徑的變量 成功返回0
char *getcwd(char *buf,iint n) 此函數(shù)取當前工作目錄并存入buf中,直到n個字
節(jié)長為為止.錯誤返回NULL
int getdisk() 取當前正在使用的驅動器,返回一個整數(shù)(0=A,1=B,2=C等)
int setdisk(int drive) 設置要使用的驅動器drive(0=A,1=B,2=C等),
返回可使用驅動器總數(shù)
int mkdir(char *pathname) 建立一個新的目錄pathname,成功返回0
int rmdir(char *pathname) 刪除一個目錄pathname,成功返回0
char *mktemp(char *template) 構造一個當前目錄上沒有的文件名并存于template中
char *searchpath(char *pathname) 利用MSDOS找出文件filename所在路徑,
,此函數(shù)使用DOS的PATH變量,未找到文件返回NULL
進程函數(shù),所在函數(shù)庫為stdlib.h、process.h
void abort() 此函數(shù)通過調用具有出口代碼3的_exit寫一個終止信息于stderr,
并異常終止程序。無返回值
int exec…裝入和運行其它程序
int execl( char *pathname,char *arg0,char *arg1,…,char *argn,NULL)
int execle( char *pathname,char *arg0,char *arg1,…,
char *argn,NULL,char *envp[])
int execlp( char *pathname,char *arg0,char *arg1,…,NULL)
int execlpe(char *pathname,char *arg0,char *arg1,…,NULL,char *envp[])
int execv( char *pathname,char *argv[])
int execve( char *pathname,char *argv[],char *envp[])
int execvp( char *pathname,char *argv[])
int execvpe(char *pathname,char *argv[],char *envp[])
exec函數(shù)族裝入并運行程序pathname,并將參數(shù)
arg0(arg1,arg2,argv[],envp[])傳遞給子程序,出錯返回-1
在exec函數(shù)族中,后綴l、v、p、e添加到exec后,
所指定的函數(shù)將具有某種操作能力
有后綴 p時,函數(shù)可以利用DOS的PATH變量查找子程序文件。
l時,函數(shù)中被傳遞的參數(shù)個數(shù)固定。
v時,函數(shù)中被傳遞的參數(shù)個數(shù)不固定。
e時,函數(shù)傳遞指定參數(shù)envp,允許改變子進程的環(huán)境,
無后綴e時,子進程使用當前程序的環(huán)境。
void _exit(int status)終止當前程序,但不清理現(xiàn)場
void exit(int status) 終止當前程序,關閉所有文件,寫緩沖區(qū)的輸出(等待輸出),
并調用任何寄存器的"出口函數(shù)",無返回值
int spawn…運行子程序
int spawnl( int mode,char *pathname,char *arg0,char *arg1,…,
char *argn,NULL)
int spawnle( int mode,char *pathname,char *arg0,char *arg1,…,
char *argn,NULL,char *envp[])
int spawnlp( int mode,char *pathname,char *arg0,char *arg1,…,
char *argn,NULL)
int spawnlpe(int mode,char *pathname,char *arg0,char *arg1,…,
char *argn,NULL,char *envp[])
int spawnv( int mode,char *pathname,char *argv[])
int spawnve( int mode,char *pathname,char *argv[],char *envp[])
int spawnvp( int mode,char *pathname,char *argv[])
int spawnvpe(int mode,char *pathname,char *argv[],char *envp[])
spawn函數(shù)族在mode模式下運行子程序pathname,并將參數(shù)
arg0(arg1,arg2,argv[],envp[])傳遞給子程序.出錯返回-1
mode為運行模式
mode為 P_WAIT 表示在子程序運行完后返回本程序
P_NOWAIT 表示在子程序運行時同時運行本程序(不可用)
P_OVERLAY表示在本程序退出后運行子程序
在spawn函數(shù)族中,后綴l、v、p、e添加到spawn后,
所指定的函數(shù)將具有某種操作能力
有后綴 p時, 函數(shù)利用DOS的PATH查找子程序文件
l時, 函數(shù)傳遞的參數(shù)個數(shù)固定.
v時, 函數(shù)傳遞的參數(shù)個數(shù)不固定.
e時, 指定參數(shù)envp可以傳遞給子程序,允許改變子程序運行環(huán)境.
當無后綴e時,子程序使用本程序的環(huán)境.
int system(char *command) 將MSDOS命令command傳遞給DOS執(zhí)行
轉換子程序,函數(shù)庫為math.h、stdlib.h、ctype.h、float.h
char *ecvt(double value,int ndigit,int *decpt,int *sign)
將浮點數(shù)value轉換成字符串并返回該字符串
char *fcvt(double value,int ndigit,int *decpt,int *sign)
將浮點數(shù)value轉換成字符串并返回該字符串
char *gcvt(double value,int ndigit,char *buf)
將數(shù)value轉換成字符串并存于buf中,并返回buf的指針
char *ultoa(unsigned long value,char *string,int radix)
將無符號整型數(shù)value轉換成字符串并返回該字符串,radix為轉換時所用基數(shù)
char *ltoa(long value,char *string,int radix)
將長整型數(shù)value轉換成字符串并返回該字符串,radix為轉換時所用基數(shù)
char *itoa(int value,char *string,int radix)
將整數(shù)value轉換成字符串存入string,radix為轉換時所用基數(shù)
double atof(char *nptr) 將字符串nptr轉換成雙精度數(shù),并返回這個數(shù),錯誤返回0
int atoi(char *nptr) 將字符串nptr轉換成整型數(shù), 并返回這個數(shù),錯誤返回0
long atol(char *nptr) 將字符串nptr轉換成長整型數(shù),并返回這個數(shù),錯誤返回0
double strtod(char *str,char **endptr)將字符串str轉換成雙精度數(shù),并返回這個數(shù),
long strtol(char *str,char **endptr,int base)將字符串str轉換成長整型數(shù),
并返回這個數(shù),
int toascii(int c) 返回c相應的ASCII
int tolower(int ch) 若ch是大寫字母('A'-'Z')返回相應的小寫字母('a'-'z')
int _tolower(int ch) 返回ch相應的小寫字母('a'-'z')
int toupper(int ch) 若ch是小寫字母('a'-'z')返回相應的大寫字母('A'-'Z')
int _toupper(int ch) 返回ch相應的大寫字母('A'-'Z')
診斷函數(shù),所在函數(shù)庫為assert.h、math.h
void assert(int test) 一個擴展成if語句那樣的宏,如果test測試失敗,
就顯示一個信息并異常終止程序,無返回值
void perror(char *string) 本函數(shù)將顯示最近一次的錯誤信息,格式如下:
字符串string:錯誤信息
char *strerror(char *str) 本函數(shù)返回最近一次的錯誤信息,格式如下:
字符串str:錯誤信息
int matherr(struct exception *e)
用戶修改數(shù)學錯誤返回信息函數(shù)(沒有必要使用)
double _matherr(_mexcep why,char *fun,double *arg1p,
double *arg2p,double retval)
用戶修改數(shù)學錯誤返回信息函數(shù)(沒有必要使用)
圖形和圖像函數(shù)包含在graphics.h里面
(一) 像素函數(shù)
56. putpiel() 畫像素點函數(shù)
57. getpixel()返回像素色函數(shù)
(二) 直線和線型函數(shù)
58. line() 畫線函數(shù)
59. lineto() 畫線函數(shù)
60. linerel() 相對畫線函數(shù)
61. setlinestyle() 設置線型函數(shù)
62. getlinesettings() 獲取線型設置函數(shù)
63. setwritemode() 設置畫線模式函數(shù)
(三)、多邊形函數(shù)
64. rectangle() 畫矩形函數(shù)
65. bar() 畫條函數(shù)
66. bar3d() 畫條塊函數(shù)
67. drawpoly() 畫多邊形函數(shù)
(四)、 圓、弧和曲線函數(shù)
68. getaspectratio()獲取縱橫比函數(shù)
69. circle()畫圓函數(shù)
70. arc() 畫圓弧函數(shù)
71. ellipse()畫橢圓弧函數(shù)
72. fillellipse() 畫橢圓區(qū)函數(shù)
73. pieslice() 畫扇區(qū)函數(shù)
74. sector() 畫橢圓扇區(qū)函數(shù)
75. getarccoords()獲取圓弧坐標函數(shù)
(五)、 填充函數(shù)
76. setfillstyle() 設置填充圖樣和顏色函數(shù)
77. setfillpattern() 設置用戶圖樣函數(shù)
78. floodfill() 填充閉域函數(shù)
79. fillpoly() 填充多邊形函數(shù)
80. getfillsettings() 獲取填充設置函數(shù)
81. getfillpattern() 獲取用戶圖樣設置函數(shù)
(六)、圖像函數(shù)
82. imagesize() 圖像存儲大小函數(shù)
83. getimage() 保存圖像函數(shù)
84. putimage() 輸出圖像函數(shù)
四、圖形和圖像函數(shù)
對許多圖形應用程序,直線和曲線是非常有用的。但對有些圖形只能靠操作單個像素才能畫出。當然如果沒有畫像素的功能,就無法操作直線和曲線的函數(shù)。而且通過大規(guī)模使用像素功能,整個圖形就可以保存、寫、擦除和與屏幕上的原有圖形進行疊加。
(一) 像素函數(shù)
56. putpixel() 畫像素點函數(shù)
功能: 函數(shù)putpixel() 在圖形模式下屏幕上畫一個像素點。
用法: 函數(shù)調用方式為void putpixel(int x,int y,int color);
說明: 參數(shù)x,y為像素點的坐標,color是該像素點的顏色,它可以是顏色符號名,也可以是整型色彩值。
此函數(shù)相應的頭文件是graphics.h
返回值: 無
例: 在屏幕上(6,8)處畫一個紅色像素點:
putpixel(6,8,RED);
57. getpixel()返回像素色函數(shù)
功能: 函數(shù)getpixel()返回像素點顏色值。
用法: 該函數(shù)調用方式為int getpixel(int x,int y);
說明: 參數(shù)x,y為像素點坐標。
函數(shù)的返回值可以不反映實際彩色值,這取決于調色板的設置情況(參見setpalette()函數(shù))。
這個函數(shù)相應的頭文件為graphics.h
返回值: 返回一個像素點色彩值。
例: 把屏幕上(8,6)點的像素顏色值賦給變量color。
color=getpixel(8,6);
(二) 直線和線型函數(shù)
有三個畫直線的函數(shù),即line(),lineto(),linerel()。這些直線使用整型坐標,并相對于當前圖形視口,但不一定受視口限制,如果視口裁剪標志clip為真,那么直線將受到視口邊緣截斷;如果clip為假,即使終點坐標或新的當前位置在圖形視口或屏幕極限之外,直線截斷到屏幕極限。
有兩種線寬及幾種線型可供選擇,也可以自己定義線圖樣。下面分別介紹直線和線型函數(shù)。
58. line() 畫線函數(shù)
功能: 函數(shù)line()使用當前繪圖色、線型及線寬,在給定的兩點間畫一直線。
用法: 該函數(shù)調用方式為void line(int startx,int starty,int endx,int endy);
說明: 參數(shù)startx,starty為起點坐標,endx,endy為終點坐標,函數(shù)調用前后,圖形狀態(tài)下屏幕光標(一般不可見)當前位置不改變。
此函數(shù)相應的頭文件為graphics.h
返回值: 無
例: 見函數(shù)60.linerel()中的實例。
59. lineto() 畫線函數(shù)
功能: 函數(shù)lineto()使用當前繪圖色、線型及線寬,從當前位置畫一直線到指定位置。
用法: 此函數(shù)調用方式為void lineto(int x,int y);
說明: 參數(shù)x,y為指定點的坐標,函數(shù)調用后,當前位置改變到指定點(x,y)。
該函數(shù)對應的頭文件為graphics.h
返回值: 無
例: 見函數(shù)60.linerel()中的實例。
60.linerel() 相對畫線函數(shù)
功能: 函數(shù)linerel() 使用當前繪圖色、線型及線寬,從當前位置開始,按指定的水平和垂直偏移距離畫一直線。
用法: 這個函數(shù)調用方式為void linerel(int dx,int dy);
說明: 參數(shù)dx,dy分別是水平偏移距離和垂直偏移距離。
函數(shù)調用后,當前位置變?yōu)樵黾悠凭嚯x后的位置,例如,原來的位置是(8,6),調用函數(shù)linerel(10,18)后,當前位置為(18,24)。
返回值:無
例: 下面的程序為畫線函數(shù)調用實例:
#i ncludegraphics.h
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(driver,mode,"");
setcolor(15);
line(66,66,88,88);
lineto(100,100);
linerel(36,64);
getch();
restorecrtmode();
}
61. setlinestyle() 設置線型函數(shù)
功能: setlinestyle() 為畫線函數(shù)設置當前線型,包括線型、線圖樣和線寬。
用法: setlinestyle() 函數(shù)調用方式為void setlinestyle(int stly,unsigned pattern,int width);
說明: 參數(shù)style為線型取值,也可以用相應名稱表示,如表1-10中所示。
參數(shù)pattern用于自定義線圖樣,它是16位(bit)字,只有當style=USERBIT_LINE(值為1)時,pattern的值才有意義,使用用戶自定義線圖樣,與圖樣中“1”位對應的像素顯示,因此,pattern=0xFFFF,則畫實線;pattern=0x9999,則畫每隔兩個像素交替顯示的虛線,如果要畫長虛線,那么pattern的值可為0xFF00和0xF00F,當style不為USERBIT_LINE值時,雖然pattern的值不起作用,但扔須為它提供一個值,一般取為0。
參數(shù)wigth用來設定線寬,其取值見表1-11,表中給出了兩個值,即1和3,實際上,線寬取值為2也是可以接受的。
若用非法參數(shù)調用setlinestyle()函數(shù),那么graphresult()會返回錯誤代碼,并且當前線型繼續(xù)有效。
Turbo C提供的線型與線寬定義在頭文件graphics.h中,表1-10和1-11分別列出了參數(shù)的取值與含義。
表1-10 線型
-----------------------------------------------------
名 稱 取 值 含 義
-----------------------------------------------------
SOLID_LINE 0 實線
DOTTED_LINE 1 點線
CNTER_LINE 2 中心線
DASHED_LINE 3 虛線
USERBIT_LINE 4 用戶自定義線型
-----------------------------------------------------
表1-11 線寬
-----------------------------------------------------------
名 稱 取 值 說 明
-----------------------------------------------------------
NORM_WIDTH(常寬) 1 一個像素寬(缺省值)
THICK_WIDTH(加寬) 3 三個像素寬
-----------------------------------------------------------
這個函數(shù)的頭文件是graphics.h
返回值: 無
例: 下面的程序顯示了BC中所提供的線型圖樣:
#i ncludegraphics.h
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(driver,mode,"");
for(i=0;i4;i++)
{
setlinestyle(i,0,1);
line(i*50,200,i*50+60,200)
}
getch();
restorecrtmode();
}
62. getlinesettings() 獲取線型設置函數(shù)
功能: 函數(shù)getlinesettings() 用當前設置的線型、線圖樣和線寬填 寫linesettingstype型結構。
用法: 函數(shù)調用方式為void getlinesettings(struct linesettingstype *info);
說明: 此函數(shù)調用執(zhí)行后,當前的線型、線圖樣和線寬值被裝入info指向的結構里,從而可從該結構中獲得線型設置。
linesettingstype型結構定義如下:
struct linesettingstype {
int linestyle;
unsigned upattern;
int thickness;
};
其中l(wèi)inestyle用于存放線型,線型值為表1-10中的各值之一。
upattern用為裝入用戶自定義線圖樣,這是16位字,每一位等于一個像素,如果哪個位被設置,那么該像素打開,否則關閉。
thickness為線寬值存放的變量,可參見表1-11。
getlinesettings()函數(shù)對應的頭文件為graphics.h
返回值: 返回的線型設置存放在info指向的結構中。
例: 把當前線型的設置寫入info結構:
struct linesettingstype info;
getlinesettings(info);
63.setwritemode() 設置畫線模式函數(shù)
功能: 函數(shù)setwritemode() 設置畫線模式
用法: 函數(shù)調用方式為 void setwritemode()(int mode);
說明: 參數(shù)mode只有兩個取值0和1,若mode為0,則新畫的線將復蓋屏幕上原有的圖形,此為缺省畫線輸出模式。如果mode為1,那么新畫的像素點與原有圖形的像素點先進行異或(XOR)運算,然后輸出到屏幕上,使用這種畫線輸出模式,第二次畫同一圖形時,將擦除該圖形。調用setwritemode()設置的畫線輸出模式只影響函數(shù)line(),lineto(),linerel(),recangle()和drawpoly()。
setwritemode()函數(shù)對應的頭文件是graphics.h
返回值: 無
例: 設置畫線輸出模式為0:
setwritemode(0);
(三)、多邊形函數(shù)
對多邊形,無疑可用畫直線函數(shù)來畫出它,但直接提供畫多邊形的函數(shù)會給用戶很大方便。最常見的多邊形有矩形、矩形塊(或稱條形)、多邊形和多邊形塊,我們還把長方形條塊也放到這里一起考慮,雖然它不是多邊形,但它的特例就是矩形(塊)。下面直接介紹畫多邊形的函數(shù)。
64. rectangle() 畫矩形函數(shù)
功能: 函數(shù)rectangle() 用當前繪圖色、線型及線寬,畫一個給定左上角與右下角的矩形(正方形或長方形)。
用法: 此函數(shù)調用方式為void rectangle(int left,int top,int right,int bottom);
說明: 參數(shù)left,top是左上角點坐標,right,bottom是右下角點坐標。如果有一個以上角點不在當前圖形視口內,且裁剪標志clip設置的是真(1),那么調用該函數(shù)后,只有在圖形視口內的矩形部分才被畫出。
這個函數(shù)對應的頭文件為graphics.h
返回值: 無
例: 下面的程序畫一些矩形實例:
#i ncludegraphics.h
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgrpah(driver,mode,"");
rectangle(80,80,220,200);
rectangle(140,99,180,300);
rectangle(6,6,88,88);
rectangle(168,72,260,360);
getch();
restorecrtmode();
}
65. bar() 畫條函數(shù)
功能: 函數(shù)bar()用當前填充圖樣和填充色(注意不是給圖色)畫出一個指定上左上角與右下角的實心長條形(長方塊或正方塊),但沒有四條邊線)。
用法: bar()函數(shù)調用方式為void bar(int left,int top,int right,int bottom);
說明: 參數(shù)left,topright,bottom分別為左上角坐標與右下角坐標,它們和調用函數(shù)rectangle()的情形相同,調用此函數(shù)前,可用setfillstyle()或setfillpattern()設置當前填充圖樣和填充色。
注意此函數(shù)只畫沒有邊線的條形,如果要畫有邊線的的條形,可調用下面的函數(shù)bar3d()來畫,并將深度參數(shù)設為0,同時topflag參數(shù)要設置為真,否則該條形無頂邊線。
這 應的頭文件為graphics.h
返回值: 無
例: 見函數(shù)bar3d()中的實例。
66.bar3d() 畫條塊函數(shù)
功能: 函數(shù)bar3d() 使用當前繪圖色、線型及線寬畫出三維長方形條塊,并用當前填充圖樣和填 充色填充該三維條塊的表面。
用法: 此函數(shù)調用方式為void bar3d(int left,int top,int right,int bottom,int depth,int topflag);
說明: 參數(shù)left,top,right,bottom分另為左上角與右下角坐標,這與bar()函數(shù)中的一樣。參數(shù)depth為條塊的深度,以像素為單位,通常按寬度的四分之一計算。深度方向通過屏顯縱橫比調節(jié)為約45度(即這時x/y比設置為1:1)。
參數(shù)topflag相當于一個布爾參數(shù),如果設置為1(真)那么條塊上放一頂面;若設置為0(假),則三維條形就沒有頂面,這樣可使多個三維條形疊加在一起。
要使圖形更加美觀,可利用函數(shù)floodfill()或setfillpattern()來選擇填充圖樣和填充色(參見本小節(jié)(五)填充函數(shù) )。
bar3d()函數(shù)對應的頭文件為graphics.h
返回值: 無
例: 下面的程序畫一個條形和條塊:
#i ncludegraphics.h
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(driver,mode,"");
setfillstyle(SOLID-FILL,GREEN);
bar(60,80,220,160);
setfillstyle(SOLID-FILL,RED);
bar3d(260,180,360,240,20,1);
getch();
restorecrtmode();
}
67. drawpoly() 畫多邊形函數(shù)
功能: 函數(shù)drawpoly() 用當前繪圖色、線型及線寬,畫一個給定若干點所定義的多邊形。
用法: 此函數(shù)調用方式為void drawpoly(int pnumber,int *points);
說明: 參數(shù)pnumber為多邊形的頂點數(shù);參數(shù)points指向整型數(shù)組,該數(shù)組中是多邊形所有頂點(x,y)坐標值,即一系列整數(shù)對,x坐標值在前。顯然整型數(shù)組的維數(shù)至少為頂點數(shù)的2倍,在定義了多邊形所有頂點的數(shù)組polypoints時,頂點數(shù)目可通過計算sizeof(polypoints)除以2倍的sizeof(int)得到,這里除以2倍的原因是每個頂點有兩個整數(shù)坐標值。另外有一點要注意,畫一個n個頂點的閉合圖形,頂點數(shù)必須等于n+1,并且最后一點(第n+1)點坐標必須等于第一點的坐標。
drawpoly()函數(shù)對應的頭文件為grpahics.h
返回值: 無
例: 下面的程序畫一個封閉星形圖與一個不封閉星形圖:
#i ncludegraphics.h
void main()
{
int driver,mode;
static int polypoints1[18]={100,100,110,120,100,130,120,125,140,140,130,120,
140,110,120,115,100,100};
static int polypoints2[18]={180,100,210,120,200,130,220,125,240,140,230,120,
240,110,220,115,220,110};
driver=DETECT;
mode=0;
initgraph(driver,mode,"");
drawpoly(9,polypoints1);
drawpoly(9,polypoints2);
getch();
restorecrtmode();
}
(四)、 圓、弧和曲線函數(shù)
在一個屏幕上畫得很圓的圖形到另一個屏幕上可能被壓扁或拉長,這是因為每一種顯示卡與之相應的顯示模式都有一個縱橫比。縱橫比是指像素的水平方向大小與垂直方向大小的比值。如VGA顯示卡由于偈素基本上是正方形,所以縱橫比為1.000。
為了保證幾何圖形基本按預計情況顯示在屏幕上,用屏顯的縱橫比來計算和糾正不同硬件及顯示卡產生的畸變。計算縱橫比所需要的水平方向和垂直方向的比例系數(shù)可調用函數(shù)getaspectratio()獲得。
68. getaspectratio()獲取縱橫比函數(shù)
功能: 函數(shù)getaspectratio()返回x方向和y方向的比例系數(shù),用這兩個整型值可計算某一特定屏顯的縱橫比。
用法: 此函數(shù)調用方式為void getaspectratio(int xasp,int yasp);
說明: 參數(shù)xasp指向的變量存放返回的x方向比例系數(shù);參數(shù)yasp指向的變量存放返回的y方向比例系數(shù)。通常y方向比例系數(shù)為10 000, x方向比例系數(shù)不大于10 000(這是因為大多數(shù)屏幕像素高比寬長)。
注意縱橫比自動用作下面函數(shù)arc(),circle()和pieslice()中的標尺因子,使屏幕上圓或弧正常顯示。但用ellipse()函數(shù)畫橢圓必須調用本函數(shù)獲取縱橫比作為標尺因子,否則不予調整。縱橫比可用于其它幾何圖形,目的是校正和顯示圖形。
getaspectratio()函數(shù)對應的頭文件為graphics.h
返回值: 返回x與y方向比例系數(shù)分別存放在xasp和yasp所指向的變量中。
例: 下面的程序顯示縱橫比:
int xasp,yasp;
float aspectratio;
getaspectratio(xasp,yasp);
aspectratio=xasp/yasp;
printf("aspect ratio: %f",aspectratio);
69. circle()畫圓函數(shù)
功能: 函數(shù)circle()使用當前繪圖色并以實線畫一個完整的圓。
用法:該函數(shù)調用方式為void circle(int x,int y,int radius);
說明: 參數(shù)x,y為圓心坐標,radius為圓半徑,用像素個素表示。注意,調用circle()函數(shù)畫圓時不用當前線型。
不同于ellipse()函數(shù),只用單個半徑radius參數(shù)調用circle()函數(shù),故屏顯縱橫比可以自動調節(jié),以產生正確的顯示圖。
此函數(shù)對應的頭文件為graphics.h
返回值: 無
例: 畫六個同心圓,圓心在(100,100)。
#i ncludegraphics.h
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(driver,mode,"");
circle(100,100,10);
circle(100,100,20);
circle(100,100,30);
circle(100,100,40);
circle(100,100,50);
circle(100,100,60);
getch();
restorecrtmode();
}
70. arc() 畫圓弧函數(shù)
功能: 函數(shù)arc()使用當前繪圖色并以實線畫一圓弧。
用法: 函數(shù)調用方式為void arc(int x,int y,int startangle,int endangle,int radius);
說明: 參數(shù)x,y為圓心坐標,startangle與endangle分別為起始角與終止角,radius為半徑。圓心坐標和半徑以像素個數(shù)給出,起始角和終止角以度為單位,0度位于右邊,90度位于頂部,180度位于左邊,底部是270度。同往常一樣,360度與0度重合。角度按逆時針方向增加,但并不要求終止角一定比起始角大。例如指定300度和90度分別為起始角和終止角,與指定300度和450度分別為起始角和終止角可畫出相同的弧。大于360度可作為參數(shù),它將被化到0度 ̄360度范圍里。函數(shù)arc()能畫封閉圓,只要取起始角為0度,終止角為360度即可。此函數(shù)中,屏顯縱橫比可自動調節(jié)。
arc()函數(shù)對應的頭文件為graphics.h
返回值: 無
例: 以(200,200)為圓心,100為半徑,從0度到120度畫圓弧:
#i ncludegraphics.h
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(drivwer,mode,"");
setcolor(WHITE);
arc(200,200,0,120,100);
getch();
restorecrtmode();
}
網(wǎng)站標題:c語言pixel函數(shù) pixel c處理器
鏈接URL:http://chinadenli.net/article48/hgohhp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、建站公司、響應式網(wǎng)站、商城網(wǎng)站、虛擬主機、用戶體驗
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)