Đồ họa máy tính - Chế độ Graphics
lượt xem 16
download
Chế độ Graphic ở chế độ Text (văn bản) mà hình đ-ợc chia làm 80 cột và 25 hàng và toạ độ của nó là (1,1)-(80,25) có nghĩa là gồm có 25 hàng mỗi hàng chứa đ-ợc 80 ký tự. Để có thể vẽ đồ thị, tô màu hình ảnh ... trên máy vi tính ta phải chuyển sang chế độ Graphic.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Đồ họa máy tính - Chế độ Graphics
- Kü thuËt §å ho¹ m¸y tÝnh Phô lôc ChÕ ®é Graphics 1. ChÕ ®é Graphic ë chÕ ®é Text (v¨n b¶n) mµ h×nh ®−îc chia lµm 80 cét vµ 25 hµng vµ to¹ ®é cña nã lµ (1,1)-(80,25) cã nghÜa lµ gåm cã 25 hµng mçi hµng chøa ®−îc 80 ký tù. §Ó cã thÓ vÏ ®å thÞ, t« mµu h×nh ¶nh ... trªn m¸y vi tÝnh ta ph¶i chuyÓn sang chÕ ®é Graphic. Trong chÕ ®é nµy mµn h×nh ®−îc cÊu t¹o nh− lµ ma trËn ®iÓm hay l−íi vu«ng c¸c ®iÓm, t−¬ng øng víi mét vïng nhí trªn mµn h×nh. Mçi ®iÓm s¸ng trªn mµn h×nh ®−îc gäi lµ mét Pixel - Trong chÕ ®é ®¬n s¾c mçi Pixel t−¬ng øng víi mét Bit - Trong chÕ ®é 4 mµu mçi Pixel t−¬ng øng víi mét 2 bit - Trong chÕ ®é 16 mµu mçi Pixel t−¬ng øng víi 4 Bit - Trong chÕ ®é 256 mµu mçi Pixel t−¬ng øng víi 8 Bit Cã nhiÒu kiÓu mµn h×nh kh¸c nhau, sau ®©y lµ c¸c kiÓu tiªu biÓu th−êng gÆp nhÊt : a. CGA (Color Graphic Adapter) : cã 2 chÕ ®é - ChÕ ®é ph©n gi¶i cao : 640 X 200 ®en tr¾ng - ChÕ ®é ph©n gi¶i trung b×nh : 320 X 200 4 mµu b. Hercule (MGDA : Monochrome Graphic Display Adapter) : lµ m¹ch ®iÒu khiÓn mµn h×nh ®¬n s¾c víi ®é ph©n gi¶i cao 720 X 348 c. EGA (Enhanced) : ®é ph©n gi¶i 640 X 350 16 mµu hoÆc 320 X 200 256 mµu d. VGA (Video Graphic Array) : 640 X 480 16 mµu hoÆc 256 mµu e. SVGA (Super Video Graphic Array) : 1024 X 768 256 mµu 2. C¸c file cÇn thiÕt cho viÖc vÏ ®å ho¹ : Graph.TPU *.BGI (Borland Graphic Interface) lµ c¸c file chøa c¸c ®iÒu khiÓn t−¬ng øng víi c¸c mµn h×nh kh¸c nhau : CGA.BGI, EGAVGA.BGI, HERC.BGI... *.CHR lµ c¸c file Font ch÷ trong chÕ ®é ®å ho¹ : Goth.CHR (ch÷ Gothic), Litt.CHR (Small Font), Sans.CHR (Sans Serif), Trip. CHR (cao gÊp 3) Vµ ë ®Çu ch−¬ng tr×nh ph¶i khai b¸o sö dông Unit Graph.TPU : Uses Graph; 3. Thñ tôc khëi t¹o ®å ho¹ : Thñ tôc khëi t¹o chÕ ®é ®å ho¹ cã d¹ng sau : 111
- Kü thuËt §å ho¹ m¸y tÝnh InitGraph(Var GraphDriver, GraphMode : Integer; Path : String); Trong ®ã Path lµ tham sè b¸o cho PASCAL biÕt th− môc chøa c¸c file ®iÒu khiÓn ®å ho¹ cña Turbo Pascal (c¸c tÖp ®· nãi ë trªn) GraphicDriver lµ tham biÕn nguyªn, chøa gi¸ trÞ x¸c ®Þnh kiÓu mµn h×nh : 0 Detect 1 CGA 2 MCGA 3 EGA 4 EGA64 5 EGAMono 6 IBM8514 7 HercMono 8 ATT400 9 VGA 10 PC3270 Mçi mét kiÓu mµn h×nh l¹i cã nhiÒu chÕ ®é ®å ho¹ (GraphicMode) t−¬ng øng víi ®é ph©n gi¶i vµ vµ b¶ng mµu kh¸c nhau. GraphicMode lµ tham biÕn nguyªn, chøa gi¸ trÞ x¸c ®Þnh Mode ®å ho¹ b¶ng sau cho biÕt c¸c gi¸ trÞ GraphDriver, GraphMode Graphic Driver Graphic Mode §é ph©n gi¶i Sè mµu CGA CGAC0,1,2,3,4 320 X 200 CGAHi 640 X 200 MCGA MCGAC0,1,2,3 320 X 200 MCGAHi 640 X 480 EGA EGALo 640 X 200 EGAHi 640 X 350 EGA64 EGA64Lo 640 X 200 EGA64Hi 640 X 350 EGAMono EGAMonoHi 640 X 3500 VGA VGALo 640 X 200 VGAHi 640 X 480 HercMono HercMonoHi 720 X 348 ATT400 ATT400C0,1,2,3 320 X 200 ATT400Hi 640 X 400 PC3270 PC3270 720 X 350 IBM8514 IBM8514Lo 640 X 480 256 mµu IBM8514Hi 1024 X 768 256 mµu Trong lêi gäi thñ tôc InitGraph(GD, GM, Path), nÕu tr−íc ®ã ta g¸n GD: = Detect (=0) th× thñ tôc InitGraph ph¶i tù x¸c ®Þnh lÊy kiÓu mµn h×nh còng nh− Mode ®å ho¹ sao cho tèt nhÊt mµ m¸y cã thÓ cã ®−îc. Trong tr−êng hîp mµn h×nh cã thÓ ch¹y nhiÒu Mode kh¸c nhau, ta cã thÓ tù chän lÊy GraphDriver vµ GraphMode b»ng c¸ch g¸n gi¸ trÞ thÝch hîp cho GD vµ GM tr−íc khi gäi thñ tôc InitGraph : GD:=EGA; GM:=EGAHi; InitGraph(GD,GM,'C:\TP\BGI'); 112
- Kü thuËt §å ho¹ m¸y tÝnh hoÆc còng cã thÓ viÕt d−íi d¹ng sè : GD:=3; GM:=1; InitGraph(GD,GM,'C:\TP\BGI'); Hai hµm GetDriverName; vµ GetModeName(GM) cho ta tªn cña Driver vµ Mode mµn h×nh øng víi hai sè GD, GM VÝ dô 1: Uses Crt,Graph; Var GD,GM : Integer; Begin GD:=3; GM:=1; InitGraph(GD,GM,' '); DirectVideo:=False; Writeln(GetDriverName); Writeln(GetModeName(GM)); Readln; CloseGraph; End. Khi khëi t¹o chÕ ®é ®å ho¹ xuÊt hiÖn hµm GraphResult cã c¸c gi¸ trÞ sau Tªn h»ng Gi¸ trÞ sè KiÓu lçi grOk 0 Ok kh«ng cã lçi grNoInitGraph -1 Ch−a khëi t¹o ®−îc grNotDetected -2 Kh«ng cã phÇn cøng ®å ho¹ grFileNotFound -3 ThiÕu tÖp EGAVGA.BGI, Graph.TPU VÝ dô 2 : Uses Crt, Graph; Var gd, gm : Integer; Begin gd:=0; InitGraph(gd,gm,' '); If GraphResult 0 Then Halt; Circle(320,240,200); Readln; End. 4. C¸c lÖnh ®å ho¹ : SetColor(m); ®Æt mµu cho ®−êng vÏ víi m nguyªn : tõ 0 ®Õn 15 (Black, Blue...) SetBkColor(m); ®Æt mµu nÒn cho mµn h×nh MoveTo(x,y); di chuyÓn con trá ®Õn ®iÓm cã to¹ ®é (x,y) LineTo(x,y); vÏ ®o¹n th¼ng tõ vÞ trÝ con trá ®Õn ®iÓm cã to¹ ®é (x,y) LineRel(dx,dy); vÏ ®o¹n th¼ng lµ ®−êng chÐo chÝnh cña h×nh ch÷ nhËt gãc trªn bªn tr¸i lµ tõ vÞ trÝ con trá vµ 2 c¹nh lµ dx, dy Line(x1,y1,x2,y2); vÏ ®o¹n th¼ng tõ ®iÓm (x1,y1) ®Õn ®iÓm cã to¹ ®é (x2,y2) 113
- Kü thuËt §å ho¹ m¸y tÝnh GetX; cho hoµnh ®é cña con trá GetY; cho tung ®é cña con trá GetMaxX; cho hoµnh ®é lín nhÊt cña mµn h×nh (639) GetMaxY; cho tung ®é lín nhÊt cña mµn h×nh (479) PutPixel(x,y,m); vÏ ®iÓm cã to¹ ®é lµ (x,y) mµu lµ m m:=GetPixel(x,y); cho mµu cña ®iÓm (x,y) Circle(x,y,r); vÏ ®−êng trßn t©m lµ ®iÓm (x,y) b¸n kÝnh lµ r Arc(x,y,start,end,r); vÏ cung trßn t©m lµ (x,y) b¸n kÝnh lµ r start lµ gãc b¾t ®Çu, end lµ gãc cuèi (start vµ end tõ 0-360) Ellipse(x,y,start,end,rx,ry); vÏ cung elip t©m lµ (x,y) b¸n kÝnh ngang lµ rx, b¸n kÝnh ®øng lµ ry, start lµ gãc b¾t ®Çu, end lµ gãc cuèi (start vµ end tõ 0-360) PieSlice(x,y,start,end,r); vÏ h×nh qu¹t ®Æc t©m lµ (x,y) b¸n kÝnh lµ r start lµ gãc b¾t ®Çu, end lµ gãc cuèi (start vµ end tõ 0-360) Rectangle(x1,y1,x2,y2); vÏ h×nh ch÷ nhËt ®Ønh trªn bªn tr¸i lµ (x1,y1), ®Ønh d−íi bªn ph¶i lµ (x2,y2) Bar(x1,y1,x2,y2); vÏ h×nh ch÷ nhËt ®Æc ®Ønh trªn bªn tr¸i lµ (x1,y1), ®Ønh d−íi bªn ph¶i lµ (x2,y2) Bar3D(x1,y1,x2,y2,depth,top); vÏ h×nh hép ch÷ nhËt ®Ønh trªn bªn tr¸i lµ (x1,y1), ®Ønh d−íi bªn ph¶i lµ (x2,y2), depth lµ chiÒu s©u, top lµ mét biÕn kiÓu Boolean b»ng True nÕu cã vÏ 3 ®−êng phÝa trªn b»ng False nÕu cã vÏ SetWriteMode(WriteMode: Integer); ®Æt mode vÏ ®−êng th¼ng. NÕu WriteMode=CopyPut (=0) : vÏ ®−êng th¼ng nh− b×nh th−êng; cßn nÕu WriteMode=XORPut (=1) : vÏ ®−êng th¼ng, nÕu ®−êng th¼ng ®· cã th× xo¸ nÕu ch−a cã th× vÏ (XOR víi tõng ®iÓm ¶nh trªn mµn h×nh) VÝ dô : Uses Crt, Graph; Var gd, gm, x, y, m, dem : Integer; Begin gd:=0; InitGraph(gd,gm,' '); Bar3d(100,100,300,300,50,True); Readln; ClearDevice; Bar3d(100,100,300,300,50,False); Readln; dem:=0; MoveTo(320,240); Repeat x:=Random(640); y:=Random(480); m:=Random(15); SetColor(m); {LineTo(x,y);} PutPixel(x,y,m); 114
- Kü thuËt §å ho¹ m¸y tÝnh Delay(10); dem:=dem+1; If dem=500 Then Begin dem:=0; ClearDevice; End; Until KeyPressed; Readln; Repeat m:=Random(15); SetBkColor(m); ClearDevice; Delay(300); Until KeyPressed; SetBkColor(Black); ClearDevice; CloseGraph; End. 5. Lµm h×nh chuyÓn ®éng : Cho z: Word; p : Pointer; x1,y1,x2,y2 : Integer; z:=ImageSize(x1,y1,x2,y2); z b»ng sè byte ®ñ chøa h×nh ¶nh cña h×nh ch÷ nhËt (x1,y1,x2,y2) Getmem(p,z); t¹o vïng nhí míi cã kÝch cì b»ng z byte vµ p trá ®Õn vïng nhí ®ã GetImage(x1,y1,x2,y2,p^); ®−a h×nh ¶nh vµo vïng nhí mµ p trá tíi. PutImage(x,y,p^,PutMode); Víi PutMode=XorPut; OrPut; AndPut; CopyPut; VÝ dô : Uses Crt, Graph; Var z: Word; p: Pointer; x1,y1,x2,y2 : Integer; gd, gm : Integer; Begin gd:=0; InitGraph(gd,gm,' '); Circle(20,20,10); Circle(20,20,5); PutPixel(20,20,Red); x1:=0; y1:=0;x2:=40;y2:=40; z:=ImageSize(x1,y1,x2,y2); Getmem(p,z); GetImage(x1,y1,x2,y2,p^); 115
- Kü thuËt §å ho¹ m¸y tÝnh PutImage(x1,y1,p^,XorPut); y1:=240; For x1:=1 To 640 Do Begin PutImage(x1,y1,p^,XorPut); Delay(10); PutImage(x1,y1,p^,XorPut); End; CloseGraph; End. 6. Kh¸i niÖm ViewPort ViewPort (cöa sæ nh×n) lµ mét h×nh ch÷ nhËt trong mµn h×nh vµ khi ta thiÕt lËp th× c¸c thao t¸c vÒ ®å ho¹ ®−îc thùc hiÖn ttrong ®ã nh− lµ mét mµn ¶nh nhá. §Ó ®Æt ViewPort ta dïng lÖnh SetViewPort(x1,y1,x2,y2,Clip); x1,y1,x2,y2 lµ c¸c sè nguyªn : x1,x2: 0-639; y1,y2: 0-479; Clip : Boolean b»ng True nÕu kh«ng cho phÐp vÏ ra ngoµi, b»ng False nÕu cho phep {ClipOn=True, ClipOff=False} Vµ khi ®ã gèc to¹ ®é ®−îc chuyÓn vÒ ®iÓm cã to¹ ®é lµ (x1,y1) vµ to¹ ®é míi cña ®iÓm nµy lµ (0,0). VÝ dô : Uses Crt, Graph; Var x1,y1,x2,y2 : Integer; gd, gm : Integer; Begin gd:=0; InitGraph(gd,gm,' '); SetViewPort(320,240,639,479,True); Circle(0,0,200); Readln; ClearviewPort; SetViewPort(320,240,639,479,False); ClearViewPort; Circle(0,0,200); Readln; CloseGraph; End. 7. HiÓn thÞ v¨n b¶n trong chÕ ®é ®å ho¹ DirectVideo:=False; cho phÐp dïng lÖnh Write, Writeln trong chÕ ®é ®å ho¹ OutText(xau); cho hiÖn néi dung x©u ë t¹i vÞ trÝ con trá 116
- Kü thuËt §å ho¹ m¸y tÝnh OutTextXY(a,b,xau); cho hiÖn néi dung x©u ë t¹i ®iÓm (x,b) SetTextStyle(Font,huong,kichco); font : 0 : b×nh th−êng 1 : Cao gÊp 3 2 : ch÷ nhá 3 : ch÷ Sans Serif 4 : KiÓu g«-tic (Gothic) ........... 12 *.CHR cã bao nhiªu tÖp *.CHR th× cã bÊy nhiªu ch÷ Huong : 0 : h−íng in ngang 1 : h−íng in ®−íng Kichco : 1-10 lµ hÖ sè phãng to cña ch÷ SetTextJustify(ngang,dung); ngang : 0 : LeftText : vÞ trÝ hiÖn t¹i cña con trá ë bªn tr¸i cña Text 1 : CenterText : vÞ trÝ hiÖn t¹i cña con trá ë gi÷a cña Text 2 : RightText : vÞ trÝ hiÖn t¹i cña con trá ë bªn ph¶i cña Text dung : 0 : BottomText : vÞ trÝ hiÖn t¹i cña con trá ë bªn d−íi cña Text 1 : CenterText : vÞ trÝ hiÖn t¹i cña con trá ë gi÷a theo chiÒu ®øng cña Text 2 : TopText : vÞ trÝ hiÖn t¹i cña con trá ë bªn trªn cña Text 8. T« mµu miÒn kÝn Tr−íc khi t« mµu miÒn nµo ®ã thi ta ph¶i ®Æt mÉu nÒn cÇn t« b»ng lÖnh SetFillStyle(Pattern, color); Color : lµ mµu cÇn t« cho miÒn kÝn tõ 0-15 Pattern : lµ mÉu nÒn cÇn t« cho miÒn kÝn 0-12 0 : t« mµu cïng mµu nÒn 1 : mµu ®Æc 2 : ®−êng ®øt nÐt .............................. 12 : kiÓu ng−êi dïng ®inh nghÜa Sau ®ã muèn t« mµu miÒn kÝn chøa ®iÓm (x,y) ta dïng lÖnh FloodFill(x,y,m); víi m chÝnh lµ mµu cña ®−êng kÝn chøa ®iÓm (x,y) VÝ dô : Uses Crt, Graph, dos; Const (* Pattern : FillPatternType = ($80,$63,$63,$63,$7f,$63,$63,$63);*) Pattern : FillPatternType = ($1a,$2b,$4c,$8d,$8d,$4c,$2b,$1a); Var gd,gm, i : integer; Begin gd:=0; InitGraph(gd,gm,' '); SetColor(red); Circle(320,240,100); 117
- Kü thuËt §å ho¹ m¸y tÝnh For i:=0 To 11 Do Begin SetFillStyle(i,Cyan); FloodFill(320,240,red); Readln; End; SetFillPattern(Pattern,Red); SetFillStyle(12,Red); Circle(320,240,100); FloodFill(320,240,red); Readln; CloseGraph; End. 9. LÊy thêi gian vµ ngµy th¸ng cña hÖ thèng §Ó lÊy ngµy vµ giê cña hÖ thèng ta ph¶i sö dông Unit DOS vµ khai b¸o c¸c biÕn : Var gio,phut,giay,pt,nam,thang,ngay,dw: Word; t−¬ng øng lµ giê, phót, gi©y, phÇn tr¨m gi©y vµ n¨m, th¸ng, ngµy, thø tù cña ngµy trong tuÇn vµ sau ®ã dïng lÖnh : GetTime(gio,phut,giay,pt); GetDate(nam,thang,ngay,dw); Cßn ®Ó ®Æt thêi gian vµ ngµy th¸ng ta dïng lÖnh : SetTime(gio,phut,giay,pt); SetDate(nam,thang,ngay,dw); VÝ dô : Uses Crt, Graph, dos; Var gio,phut,giay,pt,nam,thang,ngay,dw:Word; Begin GetTime(gio,phut,giay,pt); GetDate(nam,thang,ngay,dw); clrscr; Writeln(gio,':',phut,':',giay); Writeln(ngay,'/',thang,'/',nam); Readln; End. 118
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Giáo trình đồ họa máy tính
159 p | 1330 | 400
-
Bài giảng Vẽ đồ họa máy tính - Bài 1: Giới thiệu
27 p | 990 | 208
-
Thiết kế đồ họa máy tính
159 p | 576 | 207
-
Một số ứng dụng của đồ họa máy tính
0 p | 647 | 131
-
GIÁO TRÌNH ĐỒ HỌA MÁY TÍNH_TỔNG QUAN VỀ ĐỒ HỌA MÁY TÍNH
14 p | 381 | 127
-
Câu hỏi về đồ họa máy tính kèm theo lời giải
29 p | 272 | 42
-
Bài giảng Đồ họa máy tính - Ma Thị Châu
22 p | 279 | 28
-
Giáo trình Đồ họa máy tính: Phần 1
41 p | 197 | 26
-
Giáo trình Đồ họa máy tính (98tr)
98 p | 139 | 23
-
Bài giảng Đồ họa máy tính: Phần 1
47 p | 112 | 14
-
Bài giảng Cơ sở đồ họa máy tính: Phần 2 - ĐH CNTT&TT
34 p | 102 | 14
-
Giáo trình Kỹ thuật đồ họa máy tính - ĐH Kinh Tế Kỹ Thuật Công Nghiệp
107 p | 56 | 9
-
Bài giảng Đồ họa máy tính: Phần 2
40 p | 102 | 8
-
Bài giảng Đồ họa máy tính: Các khái niệm đồ họa máy tính - Ma Thị Châu (2017)
31 p | 54 | 8
-
Bài giảng Cơ sở đồ họa máy tính: Phần 1 - ĐH CNTT&TT
47 p | 119 | 8
-
Bài giảng Tổng quan đồ họa máy tính
11 p | 118 | 7
-
Bài giảng Đồ họa máy tính: Giới thiệu về đồ họa máy tính - TS. Đào Nam Anh
50 p | 88 | 7
-
Bài giảng Đồ họa máy tính: Phần 1 - ĐH Sư phạm kỹ thuật Nam Định
128 p | 38 | 6
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn