1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu đồ hoạ máy tính hướng dẫn sử dụng thư viện đồ họa

14 429 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 191,19 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ch vài giây B4.

Trang 1

H NG D N S D NG TH VI N H A TRONG C/C++

I M t s l u ý chung:

Yêu c u t i thi u ph i có t p tin EGAVGA.BGI (Thông th ng các t p tin h

tr h a n m trong th m c BGI).

Không nên dùng các hàm liên quan n màn hình trong ch v n b n nh

printf, cout, scanf, cin, trong khi dùng ch h a.

Khi c n tham kh o cú pháp, cách s d ng c a b t k m t hàm h a nào, ta

a con tr v tên hàm trong ch ng trình sau ó nh t h p phím CTRL+F1

khi ó máy s hi n c u trúc c a hàm c n tham kh o.

Mu n tham kh o danh sách toàn b hàm c a th vi n h a, ta nh n t h p

phím CTRL+F1 ngay t i dòng ch graphics.h

II Các hàm kh i t o và óng ch h a

1 void initgraph(int &gdriver,int &gmode,String path); Hàm này có tác d ng kh i t o ch h a trong C/C++

Trong ó:

gmode : Không c n ph i kh i t o giá tr ban u

path : ng d n t i th m c ch a các t p tin h tr h a

gdriver: Là các giá tr t 0 n 10

H ng tr Giá tr DETECT 0 (Ng m nh máy t tìm ph n c ng thích h p)

EGAMONO 5 IBM8514 6 HERCMONO 7

2 int graphresult():

Tr v mã l i c a thao tác kh i t o h a ( sau khi s d ng hàm initgraph)

- N u kh i t o thành công thì tr v giá tr là 0 (ho c grOk ).

- N u không thành công thì tr v giá tr khác 0

3 void closegraph():

óng ch h a, tr v ch v n b n bình th ng.

Trang 2

Ví d 1: Vi t ch ng trình xây d ng hàm kh i t o h a và v m t ng tròn ra màn hình.

#include <graphics.h> //th vi n ch a các hàm h a

#include <stdlib.h>

#include <iostream.h>

#include <stdio.h>

#include <conio.h>

int main(void)

{

/* Kh i t o các gái tr ban u */

int gdriver = DETECT, gmode, errorcode;

/* Kh i t o ch h a */

initgraph(&gdriver, &gmode, "c:\\bc5\\BGI");

/* L y k t qu c a thao tác kh i t o */

errorcode = graphresult();

if (errorcode != grOk) /* Thao tác kh i t o g p l i */

{

cout<<"Khong khoi tao duoc che do do hoa!!!!";

getch(); // D ng l i ch n phím b t k

exit(1); // Thoát kh i ch ng trình

}

/* Thao tác các l nh h a t i v trí này */

/* V m t ng tròn */

circle(200, 250,200); //v ng tròn có t a tâm là (200,250)và bán kính r= 200

getch(); //d ng l i xem

closegraph(); // óng ch h a

return 0; //Thoát kh i hàm main()

}

III H th ng t a

M t i m nh khi hi n th trên màn hình u c xác inh qua hai thu c tính:

- T a c a i m ó (t a c xác nh c p s nguyên (x,y))

- Màu s c c a i m ó

1 int getx()

int gety()

Các hàm trên tr v t a x, y c a con tr

Trang 3

2 int getmaxx()

Tr v chi u r ng t i a c a màn hình (tính b ng s pixel- i m nh)

3 int getmaxy()

Tr v chi u cao t i a c a màn hình (tính b ng s pixel- i m nh)

Hình 1: Mô ph ng t a màn hình

4 void cleardevice()

Xóa toàn b màn hình h a b ng màu n n và a con tr v v trí (0,0) c a màn hình

Ví d 2: Vi t ch ng trình v m t ng tròn có tâm (150,200) và bán kính là 100 sau ó xóa hình này và v l i ng tròn khác có tâm là chính gi a màn hình và có bán kính là n a chi u cao màn hình.

#include <graphics.h> //th vi n ch a các hàm h a

#include <iostream.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

int main(void)

{

/* Kh i t o các gái tr ban u */

int gdriver = DETECT, gmode, errorcode;

/* Kh i t o ch h a */

initgraph(&gdriver, &gmode, "C:\\bc5\\BGI");

/* L y k t qu c a thao tác kh i t o */

errorcode = graphresult();

if (errorcode != grOk) /* Thao tác kh i t o g p l i */

{

cout<<"Khong khoi tao duoc che do do hoa!!!!";

getch(); // D ng l i ch n phím b t k

exit(1); // Thoát kh i ch ng trình

getmaxx()

getmaxy()

(0,0)

Trang 4

/* V m t ng tròn có t a tâm là (200,250) và bán kính r= 200*/

circle(150, 200,100);

getch(); //d ng l i xem

cleardevice(); //Xóa màn hình tr c ó

/* L y t a chính gi a c a màn hình */

int maxx,maxy,x,y,r;

maxx = getmaxx(); //L y chi u r ng l n nh t c a màn hình

maxy = getmaxy(); //L y chi u cao l n nh t c a màn hình

x = maxx/2; //L y i m chính gi a màn hình theo x

y = maxy/2; //L y i m chính gi a màn hình theo y

/*V ng tròn m i có t a chính gi a màn hình và bán r */

circle(x,y,r);

getch();

closegraph(); // óng ch h a

return 0; //Thoát kh i hàm main()

}

IV V i m, ng, vùng:

1 void putpixel(x, y, color)

Hi n th ra màn hình m t i m nh có màu s c là color , t i t a ( x,y )

Trong ó:

x,y: là các s nguyên không âm

color: có giá tr t 0 n 15

B ng giá tr c a color nh sau:

Trang 5

LIGHTRED 12

Ví d : V m t i m nh có màu ra màn hình t i t a ( 20,15 )

putpixel( 20 , 15 , RED );

Ho c: putpixel( 20 , 15 , 4 );

2 int getpixel(x,y)

Tr v màu c a i m nh t i v trí có t a là (x,y)

ví d 3 : Vi t ch ng trình v th c a hàm s b t k

#include <dos.h>

#include <math.h>

#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

#include <graphics.h>

//T l phóng to

#define TL 50

void main()

{ int i;

int gr_drive = 0, gr_mode; //Kh i t o ch h a

initgraph(&gr_drive, &gr_mode, "C:\\BC5\\BGI");

setcolor(7); //V h tr c t a

line(0,getmaxy()/2,getmaxx(),getmaxy()/2);

line(getmaxx()/2,0,getmaxx()/2,getmaxy());

outtextxy(325,230,"0");

for(int i=320%TL;i<640;i+=TL)

circle(i,239,1);

for(i=240%TL;i<480;i+=TL)

circle(319,i,1);

setviewport(getmaxx()/2,getmaxy()/2,getmaxx(),getmaxy(),0);

for(float x=-255;x<255;x+=0.001) //V th Hàm s

{

//************************

float y=x*x*x-2*x+1; //Hàm s c n v

//************************

int X=TL*x,Y=-TL*(y);

putpixel(X,Y,2);

Trang 6

getch();

closegraph(); // óng ch h a

}

3 void moveto(x, y)

Di chuy n v trí con tr t i i m có t a (x,y)

4 void line(x1, y1, x2,y2)

V ng th ng có t a i m u là (x1,y1) và t a i m cu i là (x2,y2)

5 void rectangle(x1,y1,x2,y2)

V hình ch nh t có t a góc trên bên trái là (x1,y1) và t a góc d i bên ph i là (x2,y2)

6 void circle(x, y, r)

V ng tròn có t a tâm là (x,y) và bán kính là r

ví d 4:

1 V ng th ng có t a i m u là (30,30) và t a i m cu i là (150,200)

2 V hình ch nh t có t a góc trên bên trái là (30,30) và góc d i bên ph i là (150,200)

3 V ng tròn có t a tâm là (90,121) và có bán kính là 90

line(30,30);

rectangle(30,30,150,200);

circle(90,121,90);

7 void drawpoly(n, poly);

V m t a giác có s nh là n, t a các nh ch a trong m ng poly.

Chú ý: T a c a i m u và i m cu i ph i trùng nhau

Ví d 6 : V a giác có 4 nh và t a các nh l n l t là:

(1,2), (9,10),(50,30),(1,1)

int poly[8];

poly[0]= 1; poly[1]= 2;

poly[2]= 9; poly[3]= 10;

poly[4]= 50; poly[5]= 30;

poly[6]= poly[0];

poly[8]= poly[1];

drawpoly(4,poly);

Trang 7

8 void ellipse(x, y, loaibo, Do, BtrucLonx, Btrucnhoy)

V ng elip t a tâm là (x,y), có bán tr c l n là BtrucLonx, bán tr c nh là

Btrucnhoy Vi c v Elíp ph thu c vào giá tr c a bi n Do

- N u Do = 90 thì ch v cung ph n t th I c a Elip

- N u Do = 180 thì ch v cung ph n t th I và II c a Elíp

- N u Do = 360 thì v toàn b Elíp

Bi n loaibo có ch c n ng ng c l i hòan toàn v i bi n Do (xóa)

t c là:

- N u loaibo = 0 cho hi n th h t ph n v Elíp (không xóa)

- N u loaibo = 90 thì cung ph n t th I c a Elip không c hi n th (xóa i cung ph n t th I)

- N u loaibo = 180 thì cung ph n t th I và II không c hi n th

Chú ý: N u giá tr c a BtrucLonx = Btrucnhoy thì tr thành v ng tròn có bán kính là BtrucLonx

Ví d 7 : V hình Elip có t a tâm là (150,140), bán tr c l n là 100 , bán tr c nh là

60

ellipse(150, 140, 0, 360, 100 , 60 );

9 void setcolor(color)

t màu v cho vi c v các ng, hình,

color là màu c n t

10 int getcolor()

Tr v màu v hi n hành

11.void setbkcolor(color)

t màu n n cho màn hình h a, color là màu c n t

12 int getbkcolor()

Tr v màu n n c a màn hình h a

Ví d 8 : Vi t ch ng trình th c hi n các công vi c sau:

- t n n màn hình là màu xanh da tr i

- V ng tròn có tâm là (200,220) bán kính 90 và có màu là màu tr ng

- V hình ch nh t có t a góc trên bên trái là (10,20) và t a c a góc d i bên

ph i là (100, 110) và có màu là màu vàng

V hình Elip có t a tâm là (150,140), bán tr c l n là 100 , bán tr c nh là 60 và có màu là màu

#include <graphics.h> //th vi n ch a các hàm h a

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

#include <iostream.h>

Trang 8

int main(void)

{

/* Kh i t o các gái tr ban u */

int gdriver = DETECT, gmode, errorcode;

/* Kh i t o ch h a */

initgraph(&gdriver, &gmode, "BGI");

errorcode = graphresult();

if (errorcode != grOk) /* Thao tác kh i t o g p l i */

{

cout"Khong khoi tao duoc che do do hoa!!!!";

getch(); // D ng l i ch n phím b t k

exit(1); // Thoát kh i ch ng trình

}

/* t màu n n là màu xanh da tr i*/

setbkcolor(BLUE);

/* t màu v cho ng tròn là màu tr ng */

setcolor(WHITE);

/* V ng tròn */

circle(100, 120,90);

/* t màu v cho hình ch nh t là màu tr ng */

setcolor(YELLOW);

/* V hình ch nh t */

rectangle(10,20,100,110);

/* t màu v cho hình elip là màu */

setcolor(RED);

/* V hình Elip*/

ellipse(150, 140, 0, 360, 100 , 60 );

getch(); // Ch n 1 phím b t k

closegraph(); // óng ch h a

return 0; //Thoát kh i hàm main()

}

Trang 9

V Tô màu vùng

1.void setfillstyle(parten, color);

Thi t l p m u parten tô và m u tô color

trong óparten có các giá tr sau:

EMPTY_FILL 0 SOLID_FILL 1 LINE_FILL 2 LTSLASH_FILL 3 SLASH_FILL 4 BKSLASH_FILL 5 LTBKSLASH_FILL 6 HATCH_FILL 7 XHATCH_FILL 8 INTERLEAVE_FILL 9 WIDE_DOT_FILL 10 CLOSE_DOT_FILL 11 USER_FILL 12

2 floodfill(x,y, color);

Tô m t vùng khép kín v i màu s c và m u tô ã c thi t l p b i l nh floodfill

Trong ó: x,y là t a c a m t i m n m trong vùng c n tô.

color là màu c a ng biên vùng c n tô

Ví d 9: Vi t ch ng trình v ng tròn tâm có t a là (250,200), bán kính là 100

có màu là tr ng Tô hình tròn ó v i màu

#include <graphics.h> //th vi n ch a các hàm h a

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

#include <iostream.h>

int main(void)

{

/* Kh i t o các gái tr ban u */

int gdriver = DETECT, gmode, errorcode;

/* Kh i t o ch h a */

initgraph(&gdriver, &gmode, "BGI");

errorcode = graphresult();

if (errorcode != grOk) /* Thao tác kh i t o g p l i */

{

cout<<"Khong khoi tao duoc che do do hoa!!!!";

getch(); // D ng l i ch n phím b t k

Trang 10

exit(1); // Thoát kh i ch ng trình

}

/* Thi t l p màu v cho ng tròn */

setcolor(WHITE);

circle(250,200,100);

getch();

//Thi t l p màu tô và m u tô setfillstyle(1, RED);

//Tô hình tròn floodfill(250,200,WHITE);

getch();

closegraph(); // óng ch h a

return 0; //Thoát kh i hàm main()

}

VI Các hàm v ch

1 void outtextxy(x, y, St);

Hi n th chu i ký t St ra màn hình t i v trí có t a (x,y)

2 void far settextstyle(font, direction, size)

Thi t l p Font (font), h ng (direction)và l n (size) c a ch chocho vi c hi n th chu i

kí t c a hàm outtextxy.

Trong ó:

font : 0,1,2,3,4

direction : 0 Hi n th ch ngang

1 Hi n th ch d c size : l n c a ch

Ch ngang

3 void settextjustify(horiz, vert);

Thi t l p ch canh ch nh l cho vi c hi n th chu i ký t c a hàm outtext, outtextxy.

Trang 11

horiz LEFT_TEXT 0 Canh l t trái sang ph i

CENTER_TEXT 1 canh l gi a RIGHT_TEXT 2 Canh l ph i vert BOTTOM_TEXT 0 Canh l phía d i c a dòng

CENTER_TEXT 1 Canh l gi a dòng TOP_TEXT 2 Canh l phía trên c a dòng

0 Canh l t trái

Canh l phía d i c a dòng

Canh l gi a dòng

" Xin chao cac ban " theo chi u d c

và dòng ch " Chuc moi dieu tot dep"theo chi u ngang

t i i m có t a (150,100)

#include <graphics.h>

#include <stdlib.h>

#include <iostream.h>

#include <stdio.h>

#include <conio.h>

int main(void)

{

int gdriver = DETECT, gmode, errorcode;

char stdoc[40]=" Xin chao cac ban ";

char stngang[40] = " Chuc moi dieu tot dep ";

initgraph(&gdriver, &gmode, "c:\\bc5\\BGI");

errorcode = graphresult();

if (errorcode != grOk)

{

Trang 12

getch();

exit(1);

}

// Thi t l p hi n th theo chi u d c

settextstyle(1,1,5);

// a ch ra màn hình

outtextxy(150, 100, stdoc);

getch();

// Thi t l p hi n th theo chi u ngang

settextstyle(1,0,5);

// a ch ra màn hình

outtextxy(150, 100, stngang);

getch();

closegraph();

return 0;

}

VII T o ho t hình

Ý t ng: V i t ng ra màn hinh, d ng l i m t lúc xem sau xóa i t ng

v a v , v l i i t ng t a khác Quá trình trên di n ra xen k v i nhau t o

ra c m giác i t ng ang chuy n ng.

Cách th c hi n

B1 t màu cho i t ng c n v

B2 V i t ng ra màn hình

B3 Ch vài giây

B4 Xóa i v a v b ng cách v l i i t ng ó v i màu là màu n n

B5 Thay i t a c a i t ng r i l p l i t B1

Ví d 11: V ng tròn chuy n ng qua l i trên màn màn hình

#include <conio.h>

#include <graphics.h>

#include <math.h>

#include <dos.h>

#define RADIUS 21

void banhxe()

{

double xc = 100, yc;

Trang 13

yc = 448 - RADIUS;

int i=1;

while (!kbhit())

{

setcolor(YELLOW); // t màu v cho i t ng

circle(xc, yc, RADIUS);

/* Xóa i t ng v a v */

setcolor(BLACK); // t màu v cho i t ng là màu n n

circle(xc, yc, RADIUS); //V l i i t ng b ng màu n n

xc = xc + i; //Thay i t a c a i t ng

if ((xc+RADIUS >=getmaxx())|| (xc-RADIUS <=0))

i = -i; // i chi u chuy n ng c a bánh xe

}

}

void main()

{

int gr_drive = DETECT, gr_mode;

initgraph(&gr_drive, &gr_mode, "C:\\bc5\\bgi");

line(0, 450, getmaxx(), 450);

line(0, 451, getmaxx(), 451);

banhxe();

getch();

closegraph();

}

Ví d 12: Vi t ch ng trình minh h a bánh xe l a chuy n ng qua l i trên màn hình

/* Ve banh xe lua */

#include <conio.h>

#include <graphics.h>

#include <math.h>

#include <dos.h>

/* 1 / sqrt(2) */

#define FCT 0.7071067

/* H s i t sang radian */

#define RADS 0.017453293

Trang 14

#define RADIUS 21 //Bán kính bánh xe

void banhxelua()

{

double angle = 45, xc = 100, yc, xl, yl;

yc = 448 - RADIUS;

int i = 2;

while (!kbhit())

{

setcolor(YELLOW); // t màu v cho bánh xe

xl = RADIUS * cos(angle * RADS);

yl = RADIUS * sin(angle * RADS);

circle(xc, yc, RADIUS);

circle(xc + 100, yc, RADIUS);

setcolor(RED); // t màu v cho tr c khu a

line(xc + xl, yc + yl, xc + xl + 100, yc + yl);

line(xc - xl, yc - yl, xc - xl + 100, yc - yl);

/* Xóa các i t ng v a v */

setcolor(BLACK); // t màu n n v các i t ng

circle(xc, yc, RADIUS);

circle(xc + 100, yc, RADIUS);

line(xc + xl, yc + yl, xc + xl + 100, yc + yl);

line(xc - xl, yc - yl, xc - xl + 100, yc - yl);

angle += 1;

xc += i * M_PI * RADIUS / 360; //Thay i t a c a các i t ng

if ((xc+100+RADIUS >=getmaxx()) ||(xc-RADIUS <=0))

i = -i; // i h ng chuy n ng c a bánh xe

}

}

void main()

{

int gr_drive = DETECT, gr_mode;

initgraph(&gr_drive, &gr_mode, "C:\\BC5\\BGI");

line(0, 450, getmaxx(), 450);

line(0, 451, getmaxx(), 451);

banhxelua();

getch();

closegraph();

}

Ngày đăng: 03/12/2015, 18:45

HÌNH ẢNH LIÊN QUAN

Hình 1: Mô ph ng t a   màn hình - Tài liệu đồ hoạ máy tính   hướng dẫn sử dụng thư viện đồ họa
Hình 1 Mô ph ng t a màn hình (Trang 3)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w