Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Đồ họa máy tính pptx
MIỄN PHÍ
Số trang
23
Kích thước
1.2 MB
Định dạng
PDF
Lượt xem
871

Đồ họa máy tính pptx

Nội dung xem thử

Mô tả chi tiết

Ch­¬ng 8

®å häa

Trong ch­¬ng nµy sÏ giíi thiÖu c¸c hµm ®Ó vÏ c¸c ®­êng vµ h×nh

c¬ b¶n nh­ ®­êng trßn, cung elip, h×nh qu¹t, ®­êng gÉy khóc, h×nh

®a gi¸c, ®­êng th¼ng, ®­êng ch÷ nhËt, h×nh ch÷ nhËt, h×nh hép ch÷

nhËt, ... Ngoµi ra cßn ®Ò cËp tíi c¸c vÊn ®Ò rÊt lý thó kh¸c nh­: xö lý

v¨n b¶n trªn mµn h×nh ®å häa, cöa sæ vµ kü thuËt t¹o ¶nh di ®éng.

C¸c hµm ®å häa ®­îc khai b¸o trong tÖp graphics.h.

§ 1. Kh¸i niÖm ®å häa

§Ó hiÓu kü thuËt lËp tr×nh ®å häa, ®Çu tiªn ph¶i hiÓu c¸c yÕu tè c¬

b¶n cña ®å häa. Tõ tr­íc ®Õn nay chóng ta chñ yÕu lµm viÖc víi kiÓu

v¨n b¶n. NghÜa lµ mµn h×nh ®­îc thiÕt lËp ®Ó hiÓn thÞ 25 dßng, mçi

dßng cã thÓ chøa 80 ký tù. Trong kiÓu v¨n b¶n, c¸c ký tù hiÓn thÞ

trªn mµn h×nh ®· ®­îc phÇn cøng cña m¸y PC Ên ®Þnh tr­íc vµ ta

kh«ng thÓ nµo thay ®æi ®­îc kÝch th­íc, kiÓu ch÷.

ë mµn h×nh ®å häa, ta cã thÓ xö lý ®Õn tõng chÊm ®iÓm (pixel)

trªn mµn h×nh vµ do vËy muèn vÏ bÊt kú thø g× còng ®­îc. Sù bµi trÝ

vµ sè pixel trªn mµn h×nh ®­îc gäi lµ ®é ph©n gi¶i (resolution). Do

mçi kiÓu mµn h×nh ®å häa cã mét c¸ch xö lý ®å häa riªng nªn

TURBO C cung cÊp mét tÖp tin ®iÒu khiÓn riªng cho tõng kiÓu ®å

häa. B¶ng 8-1 cho thÊy c¸c kiÓu ®å häa vµ c¸c tÖp tin ®iÒu khiÓn

chóng.

Ngoµi c¸c tÖp cã ®u«i BGI chøa ch­¬ng tr×nh ®iÒu khiÓn ®å häa,

TURBO C cßn cung cÊp c¸c tÖp tin ®u«i CHR chøa c¸c Font ch÷ ®Ó

vÏ c¸c kiÓu ch÷ kh¸c nhau trªn mµn h×nh ®å häa. §ã lµ c¸c tÖp:

GOTH.CHR

LITT.CHR

SANS.CHR

TRIP.CHR

B¶ng 8-1. C¸c tÖp tin ®iÒu khiÓn ®å häa cña TURBO C++

Tªn tÖp tin KiÓu mµn h×nh ®å häa

ATT.BGI ATT & T6300 (400 dßng)

CGA.BGI IBMCGA, MCGA vµ c¸c m¸y t­¬ng thÝch

EGAVGA.BGI IBM EGA, VGA vµ c¸c m¸y t­¬ng thÝch

HERC.BGI Hercules monochrome vµ c¸c m¸y t­¬ng thÝch

IBM8514.BGI IBM 8514 vµ c¸c m¸y t­¬ng thÝch

PC3270.BGI IBM 3270 PC

Mµn h×nh ®å häa gåm nhiÒu ®iÓm ¶nh ®­îc s¾p xÕp trªn c¸c

®­êng th¼ng ngang vµ däc. §iÒu nµy ®óng cho tÊt c¶ c¸c kiÓu mµn

h×nh ®å häa cña m¸y tÝnh. Kh¸c biÖt chñ yÕu gi÷a chóng lµ kÝch

th­íc vµ sè c¸c ®iÓm ¶nh. Trong kiÓu CGA (®é ph©n gi¶i thÊp), ®iÓm

¶nh cã kÝch th­íc lín, chiÒu ngang cã 320 ®iÓm ¶nh, cßn theo chiÒu

däc cã 200 ®iÓm ¶nh. Mµn h×nh VGA cã ®é ph©n gi¶i cao h¬n: ®iÓm

¶nh nhá h¬n, trªn mçi hµng cã 640 ®iÓm ¶nh vµ trªn mçi cét cã 480

®iÓm ¶nh. §iÓm ¶nh cµng nhá th× sè ®iÓm ¶nh trªn mµn h×nh cµng

nhiÒu vµ chÊt l­îng ®å häa cµng cao.

Mçi kiÓu ®å häa dïng mét hÖ täa ®é riªng. HÖ täa ®é cho mµn

h×nh VGA lµ 640 x 480 nh­ sau :

(0,0) (639,0)

(0,479) (639,479)

H×nh 8.1. HÖ täa ®é VGA

446 447

Nhê hÖ täa ®é nµy, ta cã thÓ t¸c ®éng hay tham chiÕu ®Õn bÊt kú

®iÓm ¶nh nµo trªn mµn h×nh ®å häa.

NÕu dïng mµn h×nh CGA th× gãc d­íi ph¶i cã täa ®é (319, 199).

§éc lËp víi kiÓu ®å häa ®ang sö dông, c¸c hµm getmaxx vµ getmaxy

bao giê còng cho täa ®é x vµ y lín nhÊt trong kiÓu ®å häa ®ang dïng.

Mét ch­¬ng tr×nh ®å häa th­êng gåm c¸c phÇn sau:

- Khëi ®éng hÖ thèng ®å häa.

- X¸c ®Þnh mÇu nÒn (mÇu mµn h×nh), mÇu ®­êng vÏ, mÇu t« vµ

kiÓu (mÉu) t«.

- VÏ, t« mÇu c¸c h×nh mµ ta mong muèn.

- C¸c thao t¸c ®å häa kh¸c nh­ cho hiÖn c¸c dßng ch÷...

- §ãng hÖ thèng ®å häa ®Ó trë vÒ mode v¨n b¶n.

§ 2. Khëi ®éng hÖ ®å häa

Môc ®Ých cña viÖc khëi ®éng hÖ thèng ®å häa lµ x¸c ®Þnh thiÕt bÞ

®å häa (mµn h×nh) vµ mèt ®å häa sÏ sö dông trong ch­¬ng tr×nh. §Ó

lµm ®iÒu nµy ta dïng hµm:

void initgraph(int *graphdriver, int *graphmode,char *driverpath);

trong ®ã: driverpath lµ ®­êng dÉn cña th­ môc chøa c¸c tÖp tin ®iÒu

khiÓn ®å häa, graphdriver, graphmode cho biÕt mµn h×nh vµ mèt ®å

häa sÏ sö dông trong ch­¬ng tr×nh. B¶ng 8-2 cho thÊy c¸c gi¸ trÞ kh¶

dÜ cña graphdriver vµ graphmode.

VÝ dô 1. Gi¶ sö m¸y tÝnh cña ta cã mµn h×nh EGA, c¸c tÖp tin ®å

häa chøa trong th­ môc C: \TC, khi ®ã ta cã thÓ khëi ®éng hÖ thèng

®å häa nh­ sau:

#include "graphics.h"

main()

{

int mh=EGA, mode= EGALO;

initgraph(&mh, &mode, "C:\TC");

. . .

}

B¶ng 8-2. C¸c gi¸ trÞ kh¶ dÜ cña graphdriver, graphmode

graphdriver graphmode §é ph©n gi¶i

Detect (0)

CGA (1) CGAC0 (0) 320 x 200

CGAC1 (1) 320 x 200

CGAC2 (2) 320 x 200

CGAC3 (3) 320 x 200

CGAHi (4) 640 x 200

MCGA (2) MCGA0 (0) 320 x 200

MCGA1 (1) 320 x 200

MCGA2 (2) 320 x 200

MCGA3 (3) 320 x 200

MCGAMed (4) 640 x 200

MCGAHi (5) 640 x 480

EGA (3) EGALO (0) 640 x 200

EGAHi (1) 640 x 350

EGA64 (4) EGA64LO (0) 640 x 200

EGA64Hi (1) 640 x 350

EGAMONO (5) EGAMONOHi (0) 640 x 350

VGA (9) VGALO (0) 640 x 200

VGAMED (1) 640 x 350

VGAHI (2) 640 x 480

HERCMONO (7) HERCMONOHI 720 x 348

ATT400 (8) ATT400C0 (0) 320 x 200

ATT400C1 (1) 320 x 200

ATT400C2 (2) 320 x 200

ATT400C3 (3) 320 x 200

ATT400MED (4) 640 x 400

ATT400HI (5) 640 x 400

PC3270 (10) PC3270HI (0) 720 x 350

IBM8514 (6) IBM8514LO (0) 640 x 480, 256 mÇu

IBM8514HI (1) 1024 x 768, 256 mÇu

448 449

Tải ngay đi em, còn do dự, trời tối mất!