Přidáno 1 912 bajtů,
4. 10. 2012, 16:39 Nastavuje režim zápisu pro kreslení čar.
;Deklarace
procedure SetWriteMode(WriteMode: Integer);
;Režim
:Reálný, Chráněný
;Poznámky
:Každá konstanta odpovídá binární operaci mezi jednotlivými bajty čáry a odpovídajícími bajty na obrazovce. CopyPut používá instrukci assembleru [[MOV]] a čarou přepíše to, co je na obrazovce. XORPut používá příkaz XOR a kombinuje čáru s obrazovkou. Dva za sebou jdoucí příkazy [[XOR]] vymažou nakreslenou čáru a obnoví obrazovku do původní podoby.
:[[SetWriteMode]] má vliv pouze na volání těchto rutin: [[DrawPoly]], [[Line]], [[LineRel]], [[LineTo]] a [[Rectangle]].
;Viz také
:[[Line]]
:[[LineTo]]
Vzorový příklad
{Setwrtmd.PAS}
{Vzorový příklad pro proceduru SetWriteMode.}
uses Crt, Graph;
var
Driver, Mode, I: Integer;
X1, Y1, Dx, Dy: Integer;
FillInfo: FillSettingsType;
begin
DirectVideo := False; { Vypnutí přímého zápisu na obrazovku }
Randomize;
Driver := Detect; { Přepnutí do grafického režimu }
InitGraph(Driver, Mode, ' ' );
if GraphResult < 0 then
Halt(1);
{ Vyplnění obrazovky vzorkem pozadí }
GetFillSettings(FillInfo); { Zjištění aktuálních nastavení }
SetFillStyle(WideDotFill, FillInfo.Color);
Bar(0, 0, GetMaxX, GetMaxY);
Dx := GetMaxX div 4; { Určení rozměrů obdélníka }
Dy := GetMaxY div 4;
SetLineStyle(SolidLn, 0, ThickWidth);
SetWriteMode(XORPut); { Režim XOR pro obdélník }
repeat { Kreslit do stisku klávesy }
X1 := Random(GetMaxX - Dx);
Y1 := Random(GetMaxY - Dy);
Rectangle(X1, Y1, X1 + Dx, Y1 + Dy); { Nakreslit }
Delay(10); { Krátká pauza }
Rectangle(X1, Y1, X1 + Dx, Y1 + Dy); { Smazat }
until KeyPressed;
Readln;
CloseGraph;
end.
[[Category:Graph]]
[[Category:Procedúry Graph]]