Chương 14: Màn hình và chế độ Graphic
14.2 Các File tối thiểu cần cho chế độ đồ hoạ.
Các file phục vụ cho đồ hoạ như sau: · Graph.TPU,
*.BGI, *.CHR
Với Turbo Pascal 7.0, các tệp *.BGI v à *. CHR được để trong thư mục
C:\TP\BGI còn tệp GRAPH.TPU lại được để trong thư mục C:\TP\UNITS.
Trong đó TP là thư mục chính để chứa Turbo Pascal.
Với Turbo Pascal 5.0, các tệp trên có thể để trong cùng một thư mục.
Các file *.BGI (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 như:
EGAVGA.BGI, HERC.BGI ...
Tất nhiên nếu dùng một loại màn hình thì chỉ cần Copy một file BGI t ương ứng.
Các file *.CHR chứa điều khiển vẽ các kiểu chữ khác nhau trong đồ hoạ. Nên có các tệp:
GOTH.CHR (Chữ Gothic), LITT.CHR (Chữ Small Font),
SANS.CHR (Chữ Sans SerifC),
V.v..
Sau đây là một ví dụ đơn giản giúp ta làm quen dần với lập trìnhđồ hoạ:
Program VeDuongThang;
Uses Graph; (*Sử dụng Graph.tpuS *)
Var
Gd, Gm: Integer;
Begin
{Khởi tạo đồ hoạ}.
Gd :=Detect;
Initgraph(Gd, Gm, ' C:\Turbo5\BGI');
{Đặt mầu và vẽ đường thẳng }
SetColor(Red); (*Xác lập mầu đỏX *)
MoveTo (0,0); (*Đưa con trỏ về tọa độ § (0,0) *)
LineTo(120,200); (*Vẽ đường thẳng từ V (0,0) đến (120,200) *)
Repeat Until Keypressed;
CloseGraph; (*Đóng chế độ đồ họa lại *)
End.
Trong chương trình trên đó 2 biến có tên là Gd (Graphic Driver-bộ điều khiển đồ
họa) và Gm (Graphic Mode- chế độ đồ họa). Thư viện đồ họa cung cấp cho
bạn thủ tục tự phát hiện và khởi tạo nếu đặt Gd:=Detect, nghĩa là giao cho
chương trình tự xác định lấy vỉ đồ họa. Nếu Gd:= 1 ứng với CGA v.v..( bạn nên dùng chế độ tự động)
Sau khi khởi tạo đồ họa, kết quả hàm GraphResult cho ta biết tình trạng chế độ
khởi tạo của Initgraph. Hàm này có nhiều giá trị được định nghĩa sẵn như sau.
Tên giá trị Giá trị số Kiểu lỗi được phát hiện
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 Không tìm thấy các file điều khiển đồ
họa Chương trình trên có thể viết lại như sau:
Program VeDuongThang;
Var
Gd, Gm: Integer;
Begin
{Khởi tạo đồ họa }.
Gd :=Detect;
Initgraph(Gd, Gm, ' C:\Turbo5\BGI');
If GraphResult<> GrOk then Halt;
{Đặt mầu và vẽ đường thẳng }
SetColor(Red); (*Xác lập mầu đỏX *)
MoveTo (0,0); (*Đưa con trỏ về tọa độ § (0,0) *)
LineTo(120,200); (*Vẽ đường thẳng từ V (0,0) đến (120,200) *)
Repeat Until Keypressed;
CloseGraph; (*Đóng chế độ đồ họa lại *)
End.
Như vậy sau khi dùng Initgraph, ta dùng đến hàm GraphResult để nhận biết
rõ kết quả có khởi tạo được hay không. Chỉ duy nhất khi GraphResult = grOk
ta mới có thể tiếp tục công việc vẽ đồ họa đ ược. Muốn biết lỗi loại gì ta dùng
hàm GraphErrorMsg như sau:
Program LoaiLoi; Var Gd,Gm,ErrorCode: integer; Begin Gd :=Detect; Initgraph(Gd, Gm, 'C:\Turbo5\BGI'); ErrorCode:=GraphResult;
If ErrorCode <> grOk Then Begin
Writeln( 'Lỗi :', GraphErrorMsg(ErrorCode)); Readln; Halt(1); End; SetColor(Red); MoveTo (0,0); LineTo(120,200);
Repeat Until Keypressed; CloseGraph;
End.
Trong đó GraphErrorMsg (ErrorCode) là m ột hàm thông báo kết quả lỗi đã có sẵn trong thư viện đồ họa.