//class是寫成類嗎,這個(gè)寫成類有點(diǎn)多此一舉,下面用最簡單的函數(shù)寫的,變量自己改成英文命名
站在用戶的角度思考問題,與客戶深入溝通,找到社旗網(wǎng)站設(shè)計(jì)與社旗網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站建設(shè)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、申請(qǐng)域名、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋社旗地區(qū)。
1.h
#include?stdio.h
#include?math.h
//宏定義值
#define?h?XX
#define?L?XX
#define?α?XX
double?β,θ;
double?A[3],B[3],M[3];
void?math(β,θ,A,B,M);
1.cpp
#include?"1.h"
math(β,θ,A,B,M)
{
A[0]=L*sin(fabs(θ-α));
A[1]=L*cos(fabs(θ-α))*cosβ;
A[2]=L*cos(fabs(θ-α))*sinβ,
//公式太長自己寫
}
void?main()
{
printf("請(qǐng)輸入β,θ的值:\n");
scanf("%f,%f",β,θ);
math(β,θ,A,B,M);
printf("A的坐標(biāo)為:(%f,%f,%f)\n",A[0],A[1],A[2]);
//輸出自己寫
}
代碼如下:
1、用gotoxy和gets吧。例如:
gotoxy(old_x,old_y);//跳轉(zhuǎn)到指定坐標(biāo)輸出信息
cprintf("User Name:");//在指定坐標(biāo)處輸出User Name:
gotoxy(old_x,old_y+2);//跳轉(zhuǎn)到指定坐標(biāo)輸入信息
gets(name);//輸入用戶名,name為所定義的字符數(shù)組
2、原型:extern void gotoxy(int x, int y);
用法:#include system.h
功能:將光標(biāo)移動(dòng)到指定位置說明:gotoxy(x,y)將光標(biāo)移動(dòng)到指定行y和列x。設(shè)置光標(biāo)到文本屏幕的指定位置,其中參數(shù)x,y為文本屏幕的坐標(biāo)。
gotoxy(0,0)將光標(biāo)移動(dòng)到屏幕左上角。
#include "Conio.h"
#include "graphics.h"
#define closegr closegraph
void initgr(void) /* BGI初始化 */
{
int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同樣效果 */
registerbgidriver(EGAVGA_driver);/* 注冊(cè)BGI驅(qū)動(dòng)后可以不需要.BGI文件的支持運(yùn)行 */
initgraph(gd, gm, "");
}
void DrawCoord();
void Drawstg();
void Drawcurve();
int main(void)
{
initgr(); /* BGI初始化 */
DrawCoord();
Drawstg();
Drawcurve();
getch(); /* 暫停一下,看看前面繪圖代碼的運(yùn)行結(jié)果 */
closegr(); /* 恢復(fù)TEXT屏幕模式 */
return 0;
}
void DrawCoord() /*畫坐標(biāo)系*/
{
line(50,40,50,400); /*y軸*/
line(50,400,600,400); /*x軸*/
line(50,40,45,50); /*箭頭*/
line(50,40,55,50);
line(600,400,590,395);
line(600,400,590,405);
outtextxy(35,45,"y");
outtextxy(590,410,"x");
outtextxy(40,410,"O");
}
void Drawstg() /*畫標(biāo)尺*/
{
int x,y,i;
x=50,y=400;
for(i=0;i17;i++)
{
line(x+5,y,x,y);
y-=20;
}
x=50,y=400;
for(i=0;i26;i++)
{
line(x,y-5,x,y);
x+=20;
}
}
void Drawcurve()/*畫圖示例*/
{
line(50,400,500,400-250);
}
有關(guān)圖形窗口和圖形屏幕操作函數(shù)
一、圖形窗口操作
象文本方式下可以設(shè)定屏幕窗口一樣,圖形方式下也可以在屏幕上某一區(qū)域設(shè)定窗口,只是設(shè)定的為圖形窗口而已,其后的有關(guān)圖形操作都將以這個(gè)窗口的左上角 (0, 0)作為坐標(biāo)原點(diǎn),而且可為通過設(shè)置使窗口之外的區(qū)域?yàn)椴豢山佑|。這樣,所有的圖形操作就被限定在窗口內(nèi)進(jìn)行。 void far setviewport(int xl,int yl,int x2, int y2,int clipflag); 設(shè)定一個(gè)以(xl,yl)象元點(diǎn)為左上角,(x2,y2)象元為右下角的圖
形窗口,其中x1,y1,x2,y2是相對(duì)于整個(gè)屏幕的坐標(biāo)。若 clipflag為非0,則設(shè)定的圖形以外部分不可接觸,若clipflag為0,則圖形窗口
以外可以接觸。
void far clearviewport(void); 清除現(xiàn)行圖形窗口的內(nèi)容。
void far getviewsettings(struct viewporttypefar * viewport); 獲得關(guān)于現(xiàn)行窗口的信息,并將其存于viewporttype定義的結(jié)構(gòu)
變量viewport中,其中viewporttype的結(jié)構(gòu)說明如下:
struct viewporttype
{
int left, top, right, bottom;
int cliplag;
};
注明:
1. 窗口顏色的設(shè)置與前面講過的屏幕顏色設(shè)置相同,但屏幕背景色和窗口背景色只能是一種顏色,如果窗口背景色改變,整個(gè)屏幕的背景色也將改變這與文本窗口不同。
2. 可以在同一個(gè)屏幕上設(shè)置多個(gè)窗口,但只能有一個(gè)現(xiàn)行窗口工作,要對(duì)其它窗口操作,通過將定義那個(gè)窗口的setviewport()函數(shù)再用一次即可。
3. 前面講過圖形屏幕操作的函數(shù)均適合于對(duì)窗口的操作。
二、屏幕操作
除了清屏函數(shù)以外,關(guān)于屏幕操作還有以下函數(shù):
void far setactivepage(int pagenum); void far setvisualpage(int pagenum);這兩個(gè)函數(shù)只用于EGA,VGA 以及HERCULES圖形適配器。 setctivepage()函數(shù)是為圖形輸出選擇激活頁。所謂激活頁是指后續(xù)圖形的輸出被寫到函數(shù)選定的 pagenum頁面,該頁面并不一定可見。
setvisualpage()函數(shù)才使pagenum所指定的頁面變成可見頁。頁面從0開始(Turbo C默認(rèn)頁)。如果先用setactivepage() 函數(shù)在不同頁面
上畫出一幅幅圖像,再用setvisualpage() 函數(shù)交替顯示,就可以實(shí)現(xiàn)一些動(dòng)畫的效果。
void far getimage(int xl,int yl, int x2,int y2,void far *mapbuf); void far putimge(int x,int,y,void * mapbuf, int op); unsined far imagesize(int xl,int yl,int x2,int y2);
這三個(gè)函數(shù)用于將屏幕上的圖像復(fù)制到內(nèi)存,然后再將內(nèi)存中的圖像送回到屏幕上。首先通過函數(shù)imagesize() 測試要保存左上角為
(xl,yl),右上角為(x2,y2)的圖形屏幕區(qū)域內(nèi)的全部內(nèi)容需多少個(gè)字節(jié),然后再給mapbuf分配一個(gè)所測數(shù)字節(jié)內(nèi)存空間的指針。通過調(diào)用
getimage()函數(shù)就可將該區(qū)域內(nèi)的圖像保存在內(nèi)存中,需要時(shí)可用putimage()函數(shù)將該圖像輸出到左上角為點(diǎn)(x, y)的位置上,其中
getimage()函數(shù)中的參數(shù)op規(guī)定如何釋放內(nèi)存中圖像。 關(guān)于這個(gè)參數(shù)的定義參見下表:
putimage()函數(shù)中的op值
━━━━━━━━━━━━━━━━━━━━━━━━━━
符號(hào)常數(shù) 數(shù)值 含 義
——————————————————————————
COPY_PUT 0 復(fù)制
XOR_PUT 1 與屏幕圖像異或的復(fù)制
OR_PUT 2 與屏幕圖像或后復(fù)制
AND_PUT 3 與屏幕圖像與后復(fù)制
NOT_PUT 4 復(fù)制反像的圖形
━━━━━━━━━━━━━━━━━━━━━━━━━━
對(duì)于imagesize()函數(shù),只能返回字節(jié)數(shù)小于64K字節(jié)的圖像區(qū)域,否則將會(huì)出錯(cuò),出錯(cuò)時(shí)返回-1。
本節(jié)介紹的函數(shù)在圖像動(dòng)畫處理、菜單設(shè)計(jì)技巧中非常有用。
下面程序模擬兩個(gè)小球動(dòng)態(tài)碰撞過程。#include
#include
#include
int main()
{
int i, gdriver, gmode, size;
void *buf;
gdriver=DETECT;
initgraph(gdriver, gmode, "c:\\caic\\bgi");
setbkcolor(BLUE);
cleardevice();
setcolor(LIGHTRED);
setlinestyle(0,0,1);
setfillstyle(1, 10);
circle(100, 200, 30);
floodfill(100, 200, 12);
size=imagesize(69, 169, 131, 231);
buf=malloc(size);
if(!buf) return -1;
getimage(69, 169, 131, 231,buf);
putimage(500, 269, buf, COPY_PUT);
for(i=0; i185; i++){
putimage(70+i, 170, buf, COPY_PUT);
putimage(500-i, 170, buf, COPY_PUT);
}
for(i=0;i185; i++){
putimage(255-i, 170, buf, COPY_PUT);
putimage(315+i, 170, buf, COPY_PUT);
}
getch();
closegraph();
}
圖形模式下的文本輸出
在圖形模式下,只能用標(biāo)準(zhǔn)輸出函數(shù),如printf(),puts(),putchar()函數(shù)輸出文本到屏幕。除此之外,其它輸出函數(shù)(如窗口輸出函數(shù))不能使用,即是可以輸出的標(biāo)準(zhǔn)函數(shù),也只以前景色為白色,按80列,25行的文本方式輸出。
Turbo C2.0也提供了一些專門用于在圖形顯示模式下的文本輸出函數(shù)。下面將分別進(jìn)行介紹。
一、文本輸出函數(shù) void far outtext(char far *textstring); 該函數(shù)輸出字符串指針textstring所指的文本在現(xiàn)行位置。
void far outtextxy(int x, int y, char far *textstring);該函數(shù)輸出字符串指針textstring所指的文本在規(guī)定的(x, y)位置。其中x和y為象元坐標(biāo)。
說明:
這兩個(gè)函數(shù)都是輸出字符串,但經(jīng)常會(huì)遇到輸出數(shù)值或其它類型的數(shù)據(jù),此時(shí)就必須使用格式化輸出函數(shù)sprintf()。sprintf()函數(shù)的調(diào)用格式為: int sprintf(char *str, char *format, variable-list); 它與printf()函數(shù)不同之處是將按格式化規(guī)定的內(nèi)容寫入str 指向的字符串中,返回值等于寫入的字符個(gè)數(shù)。
例如:
'C110F1sprintf(s, "your TOEFL score is %d", mark);這里s應(yīng)是字符串指針或數(shù)組,mark為整型變量。
二、有關(guān)文本字體、字型和輸出方式的設(shè)置
有關(guān)圖形方式下的文本輸出函數(shù),可以通過setcolor()函數(shù)設(shè)置輸出文本的顏色。另外,也可以改變文本字體大小以及選擇是水平方向輸出還是垂直方向輸出。
void far settexjustify(int horiz, int vert); 該函數(shù)用于定位輸出字符串。
對(duì)使用outtextxy(int x, int y, char far *str textstring)函數(shù)所輸出的字符串,其中哪個(gè)點(diǎn)對(duì)應(yīng)于定位坐標(biāo)(x,y)在TurboC2.0中是有規(guī)定的。如果把一個(gè)字符串看成一個(gè)長方形的圖形,在水平方向顯示時(shí),字符串長方形按垂直方向可分為頂部,中部和底部三個(gè)位置,水平方向可分為左,中,右三個(gè)位置,兩者結(jié)合就有9個(gè)位置。
settextjustify()函數(shù)的第一個(gè)參數(shù)horiz 指出水平方向三個(gè)位置中的一個(gè),第二個(gè)參數(shù)vert指出垂直方向三個(gè)位置中的一個(gè),二者就確定了其中一個(gè)位置。當(dāng)規(guī)定了這個(gè)位置后,用outtextxy () 函數(shù)輸出字符串時(shí),字符串長方形的這個(gè)規(guī)定位置就對(duì)準(zhǔn)函數(shù)中的(x,y)位置。而對(duì)用outtext()函數(shù)輸出字符串時(shí),這個(gè)規(guī)定的位置就位于現(xiàn)行游標(biāo)的位置。有關(guān)參數(shù) horiz和vert的取值參見下表:
參數(shù)horiz和vert的取值
━━━━━━━━━━━━━━━━━━━━━━━━
符號(hào)常數(shù) 數(shù)值 用于
————————————————————————
LEFT_TEXT 0 水平
RIGHT_TEXT 2 水平
BOTTOM_TEXT 0 垂直
TOP_TEXT 2 垂直
CENTER_TEXT 1 水平或垂直
━━━━━━━━━━━━━━━━━━━━━━━━
void far settextstyle(int font, int direction,int charsize);
該函數(shù)用來設(shè)置輸出字符的字形(由font確定)、輸出方向(由direction確定)和字符大小(由charsize確定)等特性。
Turbo C2.0對(duì)函數(shù)中各個(gè)參數(shù)的規(guī)定見下列各表所示:
font的取值
━━━━━━━━━━━━━━━━━━━━━━━━
符號(hào)常數(shù) 數(shù)值 含義
————————————————————————
DEFAULT_FONT 0 8*8點(diǎn)陣字(缺省值)
TRIPLEX_FONT 1 三倍筆劃字體
SMALL_FONT 2 小號(hào)筆劃字體
SANSSERIF_FONT 3 無襯線筆劃字體
GOTHIC_FONT 4 黑體筆劃字
━━━━━━━━━━━━━━━━━━━━━━━━
direction的取值
━━━━━━━━━━━━━━━━━━━━━━━━
符號(hào)常數(shù) 數(shù)值 含義
————————————————————————
HORIZ_DIR 0 從左到右
VERT_DIR 1 從底到頂
━━━━━━━━━━━━━━━━━━━━━━━━
charsize的取值
━━━━━━━━━━━━━━━━━━━━━━━━
符號(hào)常數(shù)或數(shù)值 含義
————————————————————————
1 8*8點(diǎn)陣
2 16*16點(diǎn)陣
3 24*24點(diǎn)陣
4 32*32點(diǎn)陣
5 40*40點(diǎn)陣
6 48*48點(diǎn)陣
7 56*56點(diǎn)陣
8 64*64點(diǎn)陣
9 72*72點(diǎn)陣
10 80*80點(diǎn)陣
USER_CHAR_SIZE=0 用戶定義的字符大小
━━━━━━━━━━━━━━━━━━━━━━━━
有關(guān)圖形屏幕下文本輸出和字體字型設(shè)置函數(shù)的用法請(qǐng)看下例:#include
#include
int main()
{
int i, gdriver, gmode;
char s[30];
gdriver=DETECT;
initgraph(gdriver, gmode, "c:\\caic\\bgi");
setbkcolor(BLUE);
cleardevice();
setviewport(100, 100, 540, 380, 1);
/*定義一個(gè)圖形窗口*/
setfillstyle(1, 2); /*綠色以實(shí)填充*/
setcolor(YELLOW);
rectangle(0, 0, 439, 279);
floodfill(50, 50, 14);
setcolor(12);
settextstyle(1, 0, 8);
/*三重筆劃字體, 水平放大8倍*/
outtextxy(20, 20, "Good Better");
setcolor(15);
settextstyle(3, 0, 5);
/*無襯筆劃字體, 水平放大5倍*/
outtextxy(120, 120, "Good Better");
setcolor(14);
settextstyle(2, 0, 8);
i=620;
sprintf(s, "Your score is %d", i);
/*將數(shù)字轉(zhuǎn)化為字符串*/
outtextxy(30, 200, s);
/*指定位置輸出字符串*/
setcolor(1);
settextstyle(4, 0, 3);
outtextxy(70, 240, s);
getch();
closegraph();
return 0;
}
三、用戶對(duì)文本字符大小的設(shè)置
前面介紹的settextstyle()函數(shù),可以設(shè)定圖形方式下輸出文本字符這字體和大小但對(duì)于筆劃型字體(除8*8點(diǎn)陣字以個(gè)的字體),只能在水平和垂直方向以相同的放大倍數(shù)放大。為此Turbo C2.0又提供了另外一個(gè)setusercharsize() 函數(shù),對(duì)筆劃字體可以分別設(shè)置水平和垂直方向的放大倍數(shù)。該函數(shù)的調(diào)用格式為:
void far setusercharsize(int mulx, int divx,int muly, int divy); 該函數(shù)用來設(shè)置筆劃型字和放大系數(shù),它只有在settextstyle()
函數(shù)中的charsize為0(或USER_CHAR_SIZE)時(shí)才起作用,并且字體為函數(shù)settextstyle()規(guī)定的字體。調(diào)用函數(shù) setusercharsize()后,每個(gè)顯示在屏幕上的字符都以其缺省大小乘以mulx/divx為輸出字符寬,乘以muly/divy為輸出字符高。該函數(shù)的用法見下例:
#include
#include
int main()
{
int gdriver, gmode;
gdriver=DETECT;
initgraph(gdriver, gmode, "c:\\caic\\bgi");
setbkcolor(BLUE);
cleardevice();
setfillstyle(1, 2); /*設(shè)置填充方式*/
setcolor(WHITE); /*設(shè)置白色作圖*/
rectangle(100, 100, 330, 380);
floodfill(50, 50, 14); /*填充方框以外的區(qū)域*/
setcolor(12); /*作圖色為淡紅*/
settextstyle(1, 0, 8); /*三重筆劃字體,放大8倍*/
outtextxy(120, 120, "Very Good");
setusercharsize(2, 1, 4, 1);
/*水平放大2倍,垂直放大4倍*/
setcolor(15);
settextstyle(3, 0, 5);
/*無襯字筆劃,放大5倍*/
outtextxy(220, 220, "Very Good");
setusercharsize(4, 1, 1, 1);
settextstyle(3, 0, 0);
outtextxy(180, 320, "Good");
getch();
closegraph();
return 0;
}
當(dāng)前題目:C語言中對(duì)坐標(biāo)軸標(biāo)注函數(shù),c語言如何建立坐標(biāo)函數(shù)
網(wǎng)站路徑:http://vcdvsql.cn/article40/hcheeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、網(wǎng)站營銷、微信小程序、外貿(mào)建站、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)