Cửa sổ trong chế độ đồ họa (ViewPort)

Một phần của tài liệu Cơ bản về lập trình Pascal (Trang 114 - 117)

IV/ MỘT SỐ HÀM VÀ THỦ TỤC CHUẨN TRONG UNIT GRAPH

6. Cửa sổ trong chế độ đồ họa (ViewPort)

Ðể thiết lập một cửa sổ trên màn hình đồ họa, ta sử dụng đến chức năng của ViewPort. Cửa sổ ViewPort được xem như một vùng chữ nhật trên màn hình độ họa, nó giống như thủ tục Window trong chế độ văn bản (Text mode), nghĩa là ta có thể hiện một dòng văn bản, vẽ hình hoặc xóa chỉ nằm gọn trong ViewPort đã định, ta có thể minh họa một cửa sổ ViewPort như hình sau:

Ðể hiểu rõ cách thiết lập một ViewPort, ta hãy xét đến cách khai báo kiểu của ViewPort như sau:

ViewPortType = Record x1, y1, x2, y2 : Integer; Clip : Boolean; End;

Trong đó: (x1, y1) , (x2, y2) lần lượt là góc tọa độ trên bên trái và tọa độ góc dưới bên phải, mà chúng phải thỏa tính chất sau:

Clip là một biến trường có kiểu Boolean mà nó có ý nghĩa như sau:

- Nếu có giá trị bằng True (hay bằng hằng ClipOn) thì không cho phép vẽ bên ngoài ViewPort.

- Nếu có giá trị bằng False (hay bằng hằng ClipOff) thì cho phép vẽ bên ngoài ViewPort.

a) Thủ tục thiết lập một ViewPort

SetViewPort(x1,y1,x2,y2:integer; Clip:Boolean);

Sau khi thiết lập ViewPort ta sẽ có một hệ tọa độ mới mà góc trên bên trái của ViewPort sẽ có tọa độ (0,0).

Ví dụ: Như hình vẽ ở trên (giả sử ta chọn Clip bằng hằng ClipOn) thì ta phải thiết lập ViewPort như sau: SetViewPort(300,250,500,350,ClipOn);

* Tọa độ âm dương

Với một số đồ thị của toán học phải có tọa độ âm dương, để vẽ nó ta phải chia màn hình ra làm 4 phần tương ứng với 4 vùng (I, II, III, IV) âm dương của một hệ trục tọa độ xy. Ðể thực hiện việc này, ta phải dùng đến cửa sổ ViewPort,

với cách thiết lập sao cho tọa độ (0,0) của trục tọa độ xy là tâm tuyệt đối của màn hình góc trên bên trái của ViewPort như sau:

- Ðặt:x1= GetmaxX; y1= GetmaxX; x2= GetmaxX; y2= GetmaxX;

- Dùng thủ tục SetViewPort(x1,y1,x2,y2,ClipOff) , với Clip = ClipOff để có thể vẽ ra ngoài giới hạn của ViewPort.

Ví dụ:

Vẽ đồ thị hàm sin(x) trong hệ trục tọa độ âm dương, với hoành độ Program Dothi; Uses Crt,Graph; Const ScaleX=20; ScaleY=80; Var mh,mode,x,y,i:integer; Begin InitGraph(mh,mode,'F:\WINAPPS\BP\BGI');

SetViewPort(GetmaxX DIV 2,GetmaxY DIV 2,GetmaxX,GetmaxY,ClipOff); SetColor(blue);

Line(-(GetmaxX DIV 2),0,GetmaxX DIV 2,0); Line(0,-(GetmaxY DIV 2),0,GetmaxY DIV 2); SetTextJustify(CenterText,CenterText);

SetColor(White);

OutTextXY(-GetmaxX DIV 4,-GetmaxX DIV 4,'DO THI HINH SIN '); SetColor(Red);

OutTextXY(GetmaxX DIV 2- 32,2,'Truc x >'); OutTextXY(27,-(GetmaxY DIV 2-5),'^ Truc y'); OutTextXY(0,0,'0,0'); for i:= -400 to 400 do begin x:=Round(2*Pi*i* ScaleX /200); y:=Round(Sin(2*Pi*i/200)* ScaleY); PutPixel(x,y,Yellow); end;

Repeat Until KeyPressed; CloseGraph;

End.

b) Thủ tục nhận ViewPort hiện hành

GetViewSettings(Var ViewPort: ViewPortType);

c) Thủ tục xóa bên trong màn hình ViewPort hiện hành

ClearViewPort;

Thủ tục xóa sạch tất cả các phần (hình vẽ, chuỗi ký tự, ...) bên trong ViewPort và đưa con trỏ về tọa độ (0,0) của cửa sổ ViewPort hiện hành.

d) Thủ tục xóa sạch màn hình đồ họa

ClearDevice;

Một phần của tài liệu Cơ bản về lập trình Pascal (Trang 114 - 117)

Tải bản đầy đủ (DOC)

(122 trang)
w