Cửa sổ trong chế độ đồ họa (ViewPort) TOP éể 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

Một phần của tài liệu Giáo trình Pascal (Trang 72 - 74)

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

6.Cửa sổ trong chế độ đồ họa (ViewPort) TOP éể 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

éể 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.

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(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.

Một phần của tài liệu Giáo trình Pascal (Trang 72 - 74)