Thư Viện GRAPH Trong Pascal | Buianhtai

Lý thuyết chương 12

I. Màn hình đồ hoạ

1. Chế độ hiển thị Có 2 chế độ hiển thị lên màn hình. – Chế độ văn bản (TEXT) – Chế độ đồ hoạ (GRAPHIC) Các chương trước chúng ta dùng các lệnh Write, Writeln để hiển thị màn hình ở chế độ TEXT. Ta chỉ có thể xuất ra màn hình các kí tự trong bảng mã ASCII (256 kí tự). Do đó có rất nhiều hạn chế.

2. Các ưu điểm của đồ hoạ Trong màn hình đồ hoạ, mỗi điểm sáng trên màn hình gọi là Pixel (Picture element : Phần tử ảnh). Ta có thể vẽ, tô màu (sáng tối) cho từng điểm riêng lẻ của màn hình. Như vậy ta có thể vẽ bất cứ hình thù nào kể cả vẽ chữ với kích thước và hình dạng khác nhau bằng cách vẽ từng điểm (ưu điểm so với màn hình đồ hoạ) Độ phân giản của màn hình được đo bằng số điểm chiều ngang, số điểm chiều dọc của màn hình đồ hoạ. Thí dụ ta nói độ phân giải màn hình VGA là 640×480 có nghĩa là chiều ngang có thể vẽ 640 điểm, chiều dọc 480 điểm. Độ phân giải càng cao thì hình vẽ càng mịn Hiện giờ tại thời điểm này (6-2001) có thể nói hầu như chúng ta gần như không còn sử dụng màn hình văn bản nữa vì các máy vi tính bây giờ đều sử dụng màn hình đồ hoạ để hiển thị (màu sắc đẹp và dễ nhìn). Chúng ta chỉ sử dụng màn hình văn bản cho một số chương trình chạy trên nền DOS.

3. Khái niệm vị trí đồ hoạ hiện tại Trong chế độ đồ hoạ có một biến CP chứa toạ độ vị trí đồ hoạ hiện tạo.Vị trí này không nhấp nháy như con trỏ màn hình chế độ văn bản mà nó ẩn đi nhìn không thấy. Con trỏ đồ hoạ hiện tại sẽ giúp một số thủ tục vẽ đồ hoạ biết điểm xuất phát bắt đầu từ đâu và sau khi vẽ con trỏ rời tới vị trí mới (nếu được chỉ ra)

II. Khởi động màn hình đồ hoạ

1. Các file cần thiết để khởi động đồ hoạ Nếu bạn đã cài Pascal đầy đủ thì bạn không cần chép thêm một tệp tin nào Còn nếu bạn chỉ chép Pascal cách bình thường (chép từ máy khác) thì bạn phải đảm bảo có các file sau trong cùng thư mục Pascal GRAPH.TPU : chứa các hàm về đồ hoạ EGAVGA.BGI : chứa các điểu khiển tương ứng với màn hình *.CHR : các file font chữ

2. Cách khởi tạo đồ hoạ Có lẽ đơn giản bạn nên dùng cách sau :

CONST path=’C:\BP\BGI’; VAR gd,gm:integer; BEGIN Initgraph(gd,gm,path); …………………. END;

Trong đó PATH là đường dẫn chưa file EGAVGA.BGI và *.CHR, nếu path=” thì Pascal hiểu là thư mục mặc định.

III. Các thủ tục thiết lập màu đồ hoạ

SETCOLOR (color:word); thủ tục đặt màu vẽ hiện tại là color (xem ở phụ lục), mầu 0 là màu nền SETBKCOLOR (color:word); thủ tục xác lập màu nền GETMAXCOLOR hàm trả lại giá trị màu cao nhất cho thiết bị và chế độ hiện tại

IV. Các thủ tục vẽ điểm

PUTPIXEL (x,y:integer; color:word); vẽ điểm sáng có màu color tại điểm có toạ độ (X,Y) GETPIXEL (x,y:integer):word; hàm trả lại màu hiện tại tại điểm (X,Y)

V. Thủ tục vẽ đường thẳng

CP : vị trí con trỏ màn hình đồ hoạ hiện tại LINE (x1,y1,x2,y2:integer); thủ tục vẽ đường thẳng nối liền 2 điểm có toạ độ (X1,Y1) và (X2,Y2) LINETO (X,Y:integer); thủ tục vẽ đường thẳng nối liền CP và điểm (X2,Y2) LINEREL (dX,dY:integer); thủ tục vẽ đường thẳng từ CP(X,Y) tới (X+dX,Y+dY) Cả 3 thủ tục trên sau khi vẽ đều di chuyển CP tới vị trị mới

VI. Thủ tục vẽ đườnd tròn

CIRCLE (x,y:integer; r:word); thủ tục vẽ đường tròn có tâm (X,Y) bán kính R

VII. Hiển thị văn bản trong chế độ đồ hoạ

OUTTEXT (st:string); cho hiện nội dung xâu St tại vị trí CP OUTTEXTXY (x,y:integer; st:string); cho hiện nội dung xâu St tai toạ độ (X,Y) SETTEXTSTYLE (Font, Direction, CharSize : Word); Font = 1 : phông chữ bitmap ma trận 8×8 = 2 : phông chữ trip = 3 : phông chữ nhỏ = 4 : phông chữ SanSeri = 5 : phông chữ Gothic Direction = 0 : chiều viết ngang = 1 : chiều viết dọc CharSize = 1..10 : hệ số phóng to chữ SETTEXTJUSTIFICATION (Horz, Vert : Word); Horz = 0 : văn bản xuất hiện bên phải con trỏ đồ hoạ = 1 : văn bản xuất hiện với tâm là con trỏ đồ hoạ = 2 : văn bản xuất hiện bên trái con trỏ đồ hoạ Vert = 0 : văn bản xuất hiện phía trên con trỏ đồ hoạ = 1 : văn bản xuất hiện quanh con trỏ đồ hoạ = 2 : văn bản xuất hiện phía dưới con trỏ đồ hoạ RESTORECRTMODE; tạm thời về chế độ văn bản SETGRAPHMODE về chế độ đồ hoạ

VIII. Vẽ hình chữ nhật, đa giác

RECTANGLE (x1,y1,x2,y2:integer); vẽ hcn với góc trên trái (x1,y1) và dưới phải (x2,y2) BAR (x1,y1,x2,y2:integer); vẽ hcn tô đặc bên trong DRAWPOLY (N:Word; var P); Vẽ đa giác có N đỉnh P là tham số không kiểu chứa toạ độ các đỉnh đa giác N là số toạ độ chỉ ra trong P Chú ý muốn vẽ đa giác kín với N cạnh, phải truyền N+1 toạ độ với P[N+1] := P[1]; VD : CT sau vẽ tam giác USES graph; CONST T : ARRAY [1..4]OF pointype=((X:50;Y:100),(X:100;Y:100), (X:150;Y:150),(X:50;Y:100)); VAR gd,gm:integer; BEGIN initgraph(gd,gm,”); Drawpoly(4,T); readln; closegraph; END. FILLPOLY (N:Word; var P); Vẽ đa giác có tô bên trong

IX. Xác định mầu vẽ, kiểu tô

SETFILLSTYLE (Patern:word; Color:word); Thiết lập kiểu tô với Patern = 0..12 : kiểu tô Color = 0..15 : màu tô FLOODFILL (x,y:integer; Border:word); Tô đầy một hình có đường bao kín miễn là hình bao kín đó chứa (X,Y) Màu của đường bao kín xác là Border

X. Khái niệm Viewport

Là một vùng hình chữ nhật trên màn hình để bạn có thể thao tác các thủ tục đồ hoạ trong đó như một màn hình nhỏ SETVIEWPORT (x1,y1,x2,y2:integer; Clip:boolean); xác lập một Viewport trong màn hình với (x1,y1,x2,y2) là toạ độ Viewport. Sau khi gọi thủ tục này toạ độ (0,0) của tất cả các thủ tục vẽ là góc trên trái (x1,y1) của Viewport. Clip = TRUE sẽ cho phép hiện lên các nét vẽ vượt ra ngoài khung Viewport.

XI. Cắt hình, dán hình, tạo hình chuyển động

Để lưu hình, ta phải dùng một vùng nhớ hcn bao lên hình đó. Sau đó ta lưu cả diện tích hcn đó IMAGESIZE (x1,y1,x2,y2:integer); xác định kích thước vùng nhớ hcn (x1,y1,x2,y2) GETMEM (var p:pointer; N:word); xác định biến động có độ nhớ N byte GETIMAGE (x1,y1,x2,y2; Var p); thủ tục chép các điểm trên hcn (x1,y1,x2,y2) vào p. PUTIMAGE (x,y:integer; var p; copymode:word); đặt hình đã lưu trong p lên màn hình CopyMode = 0 : CopyPut = 1 : XorPut = 2 : ORPut = 3 : ANDPut = 4 : NotPut

Cách tạo hình chuyển động – B1 : Vẽ hình. Lưu ảnh vào biến động không định kiểu – Tạo trễ – Xoá hình đó, khôi phục lại vị trí nền cũ với thủ tục Putimage có dùng phép XORPUT – Vẽ hình ở vị trí mới VD : Vẽ một hcn di chuyển uses crt,graph; var gd,gm,i:integer; p:pointer; size:word; begin initgraph(gd,gm,’c:\bp\bgi’); setbkcolor(0); cleardevice; setfillstyle(2,1); bar(100,100,200,150); Size:=ImageSize(100,100,200,150); GetMem(P,Size); GetImage(100,100,200,150,P^); cleardevice; for i:=1 to 100 do begin putimage(i*5,100,p^,0); delay(20); putimage(i*5,100,p^,1); end; end.

Chia sẻ:

  • X
  • Facebook
Thích Đang tải...

Có liên quan

Từ khóa » Thư Viện Graph Trong Pascal