Otevřít hlavní menu

Změny

SetViewPort

Přidáno 2 940 bajtů, 4. 10. 2012, 17:39
Created page with "Nastavuje aktuální výstupní výřez či okno pro grafický výstup. ;Deklarace procedure SetViewPort(x1, y1, x2, y2: Integer; Clip: Boolean); ;Režim :Reálný, Chrán..."
Nastavuje aktuální výstupní výřez či okno pro grafický výstup.

;Deklarace
procedure SetViewPort(x1, y1, x2, y2: Integer; Clip: Boolean);

;Režim
:Reálný, Chráněný

;Poznámky
:(X1,Y1) definují levý horní roh výřezu a (X2,Y2) definují pravý dolní roh (0<= X1 < X2 a 0 <= Y1 < Y2). Levý horní roh výřezu je (0, 0).

:Booleovský parametr Clip určuje, zda budou grafické výstupy ořezávány na hranicích aktuálního výřezu. [[SetViewPort]](0, 0, [[GetMaxX]], [[GetMaxY]], True) vždy nastaví grafické okno přes celou grafickou obrazovku. Pokud zadáte nesprávné parametry, [[GraphResult]] vrací grError a aktuální výřez se nemění.

:Všechny příkazy grafiky jsou svými souřadnicemi relativní vzhledem k nastavenému výřezu (např. [[GetX]], [[OutText]], [[Rectangle]], [[MoveTo]] atd.).

:Pokud je parametr Clip nastavený na [[True]], bude veškerá grafika ořezávána na hranici aktuálního výřezu, ovšem ukazatel aktuální pozice (CP, current pointer) se neořezává nikdy. V následujícím příkladě nebude nakreslená čára úplná, protože ji zkrátí hranice výřezu:

SetViewPort(10, 10, 20, 20, ClipOn);
Line(0, 5, 15, 5);

:Úplná čára by začínala v absolutních souřadnicích (10,15) a končila by v absolutních souřadnicích (25,15), pokud by se ořezávání neprovádělo. V tomto případě je ořezávání zapnuté, a proto úsečka skončí již v bodě (20,15) podle absolutních souřadnic, zbytek se nevykreslí.

:Procedury [[InitGraph]], [[GraphDefaults]] a [[SetGraphMode]] nastaví výřez na celou grafickou obrazovku. Nastavení aktuálního výřezu lze zjistit voláním
procedury [[GetViewSettings]], která má parametr typu [[ViewPortType]].

:Volání [[SetViewPort]] přesune ukazatel pozice do bodu (0,0).

;Omezení
:Je nutno být v grafickém režimu.

;Viz také
:[[ClearViewPort]]

:[[GetViewSettings]]

:[[GraphResult]]

:[[Ořezávání - konstanty]]


Vzorový příklad

{SetVwPrt.PAS}
{Vzorový příklad pro proceduru SetViewPort.}
uses Graph;
const
vp1 : ViewPortType =
(x1: 10; y1: 80; x2: 100; y2: 150; Clip : ClipOn);
vp2 : ViewPortType =
(x1: 110; y1: 0; x2: 200; y2: 70; Clip : ClipOn);
var
GraphDriver, GraphMode : Integer;
begin
GraphDriver := Detect;
InitGraph(GraphDriver,GraphMode,'');
if GraphResult <> grOk then
Halt(1);
with vp1 do
begin
Rectangle(Succ(x1),Succ(y1), { orámuje výřez 1 }
Pred(x2),Pred(y2));
SetViewPort(x1, y1, x2, y2, ClipOn);
OutText('Výřez 1');
end;

{ celá obrazovka }
SetViewPort(0, 0, GetMaxX, GetMaxY, ClipOn);
with vp2 do
begin
{ orámuje výřez 2 }
Rectangle(Succ(x1),Succ(y1),
Pred(x2),Pred(y2));
SetViewPort(x1, y1, x2, y2, ClipOn);
OutText('Výřez 2');
end;
Readln;
CloseGraph;
end.
[[Category:Graph]]
[[Category:Procedúry Graph]]