圖形函數(shù)省公開課一等獎全國示范課微課金獎?wù)n件_第1頁
圖形函數(shù)省公開課一等獎全國示范課微課金獎?wù)n件_第2頁
圖形函數(shù)省公開課一等獎全國示范課微課金獎?wù)n件_第3頁
圖形函數(shù)省公開課一等獎全國示范課微課金獎?wù)n件_第4頁
圖形函數(shù)省公開課一等獎全國示范課微課金獎?wù)n件_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

TurboC2.0包含有460多個庫函數(shù),其中有70多個圖形函數(shù),這些函數(shù)包含了繪圖、處理圖象及圖素、屏幕及視圖區(qū)控制、顏色及線型設(shè)置、狀態(tài)查詢和犯錯處理等,這使得TurboC含有很強圖形功效。第

部分TurboC繪圖程序設(shè)計教材P267第1頁1.圖形顯示器工作方式IBMPC機顯示器能夠在兩種基本視頻方式下工作:一個是文本方式;另一個是圖形方式。第2頁(1)文本方式在文本方式下,屏幕上能夠顯示最小單位是字符,字符在屏幕上以行、列排列,如25×80個字符。第3頁(2)圖形方式在圖形方式下,屏幕上能夠控制最小單元稱作像素(pixel),它是組成圖形基本元素,普通叫作“點”。通常把屏幕上所包含像素個數(shù)叫做分辨率。分辨率越高,顯示圖形越細致、質(zhì)量越好。第4頁

在圖形方式下,屏幕上每個像素顯示位置用屏幕坐標系來描述。在該坐標系中,屏幕左上角為坐標系原點,坐標值為(0,0);水平方向為X軸,自左向右;垂直方向為Y軸,自上向下。見下列圖。第5頁第6頁

坐標值范圍決定于所用顯示器分辨率。分辨率不一樣,水平方向上和垂直方向上點數(shù)也不一樣,即其maxx、maxy數(shù)值不一樣。就VGA顯示器來說,它通常所用分辨率為640

480,即它maxx值為639,maxy值為479。第7頁2.圖形函數(shù)及其使用方法

TurboC圖形函數(shù)均在一個頭文件“graphics.h”中定義。所以,凡是在程序中要調(diào)用這些圖形函數(shù),都必須在源程序開頭寫上文件包含命令:#include<graphics.h>第8頁(1)圖形系統(tǒng)管理

進入TurboC,顯示器處于文本方式下。在文本方式下,全部圖形函數(shù)均不能應(yīng)用。所以在調(diào)用圖形函數(shù)繪圖之前,必須先將顯示器設(shè)置為圖形模式,即圖形方式初始化。在圖形工作完成之后,又要使顯示器回到文本方式,方便進行程序文件等編輯工作。第9頁TC繪圖程序:圖形系統(tǒng)初始化繪圖關(guān)閉圖形模式

第10頁圖形方式初始化

圖形方式初始化經(jīng)過函數(shù)initgraph來實現(xiàn),它功效是經(jīng)過從磁盤上裝入一個圖形驅(qū)動程序來初始化圖形系統(tǒng),并將系統(tǒng)設(shè)置為圖形模式。其調(diào)用格式為:initgraph(&gdriver,&gmode,path);第11頁

gdriver用來指定要裝入圖形驅(qū)動程序.若

gdriver=DETECT;則由系統(tǒng)自動檢測圖形適配器最高分辨率模式,并裝入對應(yīng)圖形驅(qū)動程序.(P269表A-1)

gmode用來設(shè)置圖形顯示模式.不一樣圖形驅(qū)動程序有不一樣圖形顯示模式;在同一個圖形驅(qū)動程序下,也可能有幾個圖形顯示模式.

圖形顯示模式?jīng)Q定了顯示分辨率、顏色數(shù)等。(P271表A-4)

path是一個字符串,用來指明圖形驅(qū)動程序所在路徑。若圖形驅(qū)動程序在用戶當前目錄下,則path為空串.

第12頁

舉例:intgdriver=DETECT,gmode;initgraph(&gdriver,&gmode,“c:\\tc”);第13頁關(guān)閉圖形模式關(guān)閉圖形模式用函數(shù)closegraph,

其調(diào)用方法為:closegraph();(該函數(shù)不需參數(shù))第14頁(2)繪圖函數(shù)

TurboC提供了一些基本繪圖函數(shù),以方便圖形設(shè)計。全部繪圖函數(shù)調(diào)用時參數(shù),其類型均為整型,所以填入?yún)?shù)表參數(shù),應(yīng)為整數(shù)或整型變量。第15頁

LINE函數(shù):

在指定兩點之間畫直線。如:line(x1,y1,x2,y2);LINETO函數(shù):

從當前點畫線到指定點。如:lineto(x,y);MOVETO函數(shù):

移到指定點(不畫線)。如:moveto(x,y);第16頁

CIRCLE函數(shù):

指定圓心和半徑畫圓。如:circle(xc,yc,r);ARC函數(shù):

畫一段圓弧。要求指定圓弧所在圓圓心、半徑,以及圓弧起始角度和終止角度。如:arc(xc,yc,angs,ange,r);第17頁

ellipse(x,y,a1,a2,rx,ry);

起始角度a1,終止角度a2,橢圓心(x,y),x軸半徑rx,y軸半徑ry.

例:ellipse(200,100,0,360,50,20);畫一個橢圓周畫一個橢圓弧第18頁

RECTANGLE函數(shù):

指定矩形左上角和右下角畫一個矩形。如:rectangle(x1,y1,x2,y2);DRAWPOLY函數(shù):

畫一條多邊折線。如:drawpoly(n,p);其中,n為多邊折線頂點數(shù);p為存放頂點坐標值數(shù)組名。數(shù)組元素個數(shù)為2*n.

假如首尾兩點重合,則能夠繪制一個多邊形。第19頁

比如:#include“graphics.h“

main()

{

intgdriver,gmode;

staticintp[8]={10,20,150,150,200,30,10,20};

gdriver=DETECT;

initgraph(&gdriver,&gmode,“”);/*圖形系統(tǒng)初始化*/

drawpoly(4,p);/*畫一個三角形*/

getch();

closegraph();/*關(guān)閉圖形系統(tǒng),返回文本方式*/}第20頁

圖形屬性指顏色和線型,顏色又分為背景色和前景色。背景色指是屏幕顏色,即底色;前景色指是繪圖用顏色。任何繪圖函數(shù)都是在當前顏色(背景色和前景色)和線型狀態(tài)下作圖。系統(tǒng)默認值為:背景色為黑色;前景色為白色;線型為實線。

第21頁setbkcolor(背景色);設(shè)置背景色

如:setbkcolor(BLUE);設(shè)置背景色為蘭色

setbkcolor(12);設(shè)置背景色為12號色setcolor(畫筆色);設(shè)置畫筆色

如:setcolor(YELLOW);設(shè)置畫筆色為黃色

setcolor(5);設(shè)置畫筆色為5號色注意:背景色和畫筆色能夠是名字或數(shù)字。見下表。

第22頁符號名數(shù)值顏色BLACK

BLUE

GREEN

CYAN

RED

MAGENTA

BROWN

LIGHTGRAY

DARKGRAY

LIGHTBLUE0

1

2

3

4

5

6

7

8

9黑色

藍色

綠色

青色

紅色

紫紅色

棕色

淺灰色

深灰色

淺藍色P277表A-7第23頁符號名數(shù)值顏色LIGHTGREEN

LIGHTCYAN

LIGHTRED

LIGHTMAGENTA

YELLOW

WHITE10

11

12

13

14

15淺綠色

淺青色

淺紅色

淺紫色

黃色

白色第24頁

putpixel(x,y,color);

在(x,y)處以color色畫一點

例:putpixel(10,20,RED);在(10,20)處畫一紅點getpixel(x,y);得到(x,y)處顏色值

例:if(getpixel(300,270)==7)………

outtextxy(x,y,”字符串”);

從(x,y)處開始顯示字符串

例:outtextxy(10,20,”ABCF”);在(10,20)處顯示ABCF

第25頁setfillstyle(p,color);

設(shè)置填充模式p(取值為0-12)及填充色color。填充模式含義見P290表A-13。

floodfill(x,y,bcolor);從(x,y)開始,用setfillstyle設(shè)置好填充模式及填充色向四面填充,直到邊界(邊界色為bcolor)為止。

例:setcolor(RED);

circle(300,200,50);

setfillstyle(2,GREEN);

floodfill(300,200,RED);

從(300,200)開始,按setfillstyle設(shè)置模式及顏色開始填充,一直到紅色邊界(圓周圍界)才停頓。第26頁bar(x1,y1,x2,y2);

由setcolor設(shè)置顏色畫一個矩形,并自動按setfillstyle設(shè)置模式及顏色對矩形填充.

矩形左上角坐標(x1,y1),矩形右下角坐標(x2,y2)pieslice(x,y,a1,a2,r);

由setcolor設(shè)置顏色畫一個扇形,并自動按setfillstyle設(shè)置模式及顏色對扇形填充.

起始角度a1,終止角度a2,圓心(x,y),半徑r第27頁

voidfillellipse(intx,inty,intrx,intry);畫出一實心橢圓voidsector(intx,inty,intangs,intange,intrx,intry);畫出一實心橢圓扇區(qū)voidfillpoly(intnps,int*pxy);畫并填充一多邊形。第28頁例1:#include“graphics.h”

main()

{intgdriver,gmode;

gdriver=DETECT;

initgraph(&gdriver,&gmode,“”);/*圖形系統(tǒng)初始化*/

line(10,20,120,200);/*從(10,20)到(120,200)畫一直線*/

getch();/*任擊一個鍵便繼續(xù)向下運行*/

closegraph();/*關(guān)閉圖形系統(tǒng),返回文本方式*/}F9編譯并運行,F(xiàn)10光標落在菜單項。(3)繪圖程序例子第29頁

例2:#include<graphics.h>main(){intgd=DETECT,gm;initgraph(&gd,&gm,“”);setbkcolor(LIGHTBLUE);setcolor(RED);circle(320,240,100);getch();closegraph();}第30頁例3:#include<graphics.h>voidmydraw(){line(160,120,480,120);line(480,120,480,360);line(480,360,160,360);line(160,360,160,120);}main(){intgdriver=DECTECT,gmode;等價于:voidmydraw1(){moveto(160,120);lineto(480,120);lineto(480,360);lineto(160,360);lineto(160,120);}第31頁initgraph(&gdriver,gmode,”c:\\tc”);cleardevice();mydraw();getch();closegraph();}例3第32頁例4:#include<graphics.h>main(){intgdriver=DETECT,gmode;initgraph(&gdriver,&gmode,"");setbkcolor(15);setcolor(4);ellipse(320,240,0,360,300,200);第33頁setfillstyle(1,6);putpixel(320,240,6);floodfill(320,240,4);getch();closegraph();}例4第34頁例5:#include<graphics.h>main(){intgdriver=DETECT,gmode;initgraph(&gdriver,&gmode,"");setbkcolor(15);setcolor(4);第35頁setfillstyle(1,6);fillellipse(320,240,300,200);getch();closegraph();}例5第36頁P296例B-1金剛石圖案#include<graphics.h>#include<math.h>voidmain(){floatt;intx0=320,y0=240;intn,i,j,r,x[50],y[50];第37頁intgdriver=DETECT,gmode;

printf("inputn(23-31)andr(100-200)\n");

scanf("%d,%d",&n,&r);

initgraph(&gdriver,&gmode,"d:\\tc\\bgi");

cleardevice();

setcolor(9);

setbkcolor(4)第38頁t=6.28314/n;

for(i=0;i<n;i++){x[i]=r*cos(i*t)+x0;y[i]=r*sin(i*t)+y0;}for(i=0;i<n-2;i++){for(j=i+1;j<n;j++){line(x[i],y[i],x[j],y[j]);}第39頁}getch();closegraph();}}第40頁下面是與動畫相關(guān)幾個函數(shù):?getimage(x1,y1,x2,y2,p);

將屏幕左上角(x1,y1),右下角(x2,y2)矩形區(qū)域內(nèi)圖象存到指針P所指向內(nèi)存區(qū)域中。

?putimage(x,y,p,op);

將p所指向內(nèi)存區(qū)域內(nèi)容在屏幕上顯示,左上角坐標(x,y)。

op=0:預(yù)先對屏幕不進行任何操作;

1:預(yù)先對屏幕進行“異或”操作;

2:預(yù)先對屏幕進行“或”操作;3:預(yù)先對屏幕進行“與”操作;4:預(yù)先對緩沖區(qū)內(nèi)容進行求“反”操作;imagesize(x1,y1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論