If d <> HercMono then SetGraphMode (m-1); операторына көңіл аударыңыз. Бұл оператодың көмегімен EGA, MCGA, VGA адаптерлерінде көппарақты режимді кепілді түрде орнатуға
179
болады. Жоғарыда айтылғандай, графикалық режим Driver = Detect арқылы іске қосылғаннан кейін, адаптердің ең жоғары нөмірлі жұмыс режимі орнатылады. Аталған адаптерлер тек бір графикалық парақпен жұмыс жасай алады. Ал екі парақпен жұмыс істеуді қамтамасыз ету үшін, режим нөмірін кішірейту керек.
Сызықтар жəне нүктелер
PutPixel процедурасы көрсетілген координаталарда берілген түспен нүкте салады. Процедура тақырыбы:
Procedure PutPixel( Х / У : Integer/ Color: Word)/ мұндағы X, Y – нүкте координаталары; Color – нүкте түсі. Координаталар терезенің немесе экранның сол жақ жоғарғы
бұрышқа байланысты беріледі.
Келесі программа экранға “жұлдызды аспанды” шығарады жəне оны өшіреді. Программадан шығу үшін кез келген пернені басыңыз.
Uses CRT, Graph;
type
Pixeltype = record
x,у:Integer;end;
const
N=5000;{ “Жұлдыз” саны}
var
d,r,e,k: Integer;
x1,y1,x2,y2: Integer;
array [1..N] of Pixeltype;{Координаталар} begin
{Графиканы іске қосамыз}
d:= Detect;InitGraph(d, r,’’); e:= GraphResult;
if e<>grOk then WriteLn(GraphErrorMsg(e))
else begin
{Экран ортасында терезе саламыз}
180
x1:= GetMaxX div 4;
y1:= GetMaxY div 4;
x2:= 3*x1;
y2:= 3*y1;
Rectangle(x1,y1,x2,y2);
SetViewPort(x1+1,y1+1,x2-1,y2-
1,ClipOn);
{“Жұлдыз” салып, олардың координаталарын есте сақтаймыз}
for k:=1 to N do with a[k] do begin
x:=Random(x2-x1);
у:=Random(y2-y1)
end;
{Шығару циклы}
repeat
for k:=1 to N do
with a[k] do {“Жұлдызды”
жағамыз}
PutPixel(x,y,white); if not KeyPressed then
for k:=N downto 1 do with a[k] do {“Жұлдызды” өшіреміз}
PutPixel(x,y,black)
until KeyPressed;
while KeyPressed do k :=
ord(ReadKey);
CloseGraph
end;
end.
GetPixel функциясы координатасы берілген пикселдің түсі көрсетілген Word типті мəнді қайтарады. Функция тақырыбы :
Function GetPixel(X,Y: Integer): Word;
мұндағы X, Y – пиксел координатасы
Line процедурасы бастапқы жəне соңғы коодинаталары берілген түзу сызады. Процедура тақырыбы:
Procedure Line (X1,Y1,X2,Y2: Integer);
181
Мұндағы XI ... Yl – түзудің басының ( XI, Y1) жəне соңының (Х2, Y2) координаталары.
Түзу ағымдағы стиль жəне түспен салынады. Келесі про-граммада экран ортасында терезе салынып, терезе кездейсоқ түзулермен толтырылады. Программадан шығу үшін кез келген пернені басу керек.
Uses CRT, Graph;
var
d,r,e: Integer;
x1,y1,x2,y2: Integer; begin
Графиканы іске қосамыз} d:=Detect;InitGraph(d, r, ''); e:=GraphResult;
if e <> grOk then WriteLn(GraphErrorMsg(e))
else
begin
{Экран ортасында терезе саламыз} x1:=GetMaxX div 4;
y1:=GetMaxY div 4;
x2:=3*x1;
y2:=3*y1;
Rectangle(x1,y1,x2,y2);
SetViewPort(x1+1,y1+1,x2-1,y2-
1,ClipOn);
{Кездейсоқ түзулер циклы}
repeat
SetColor(succ(Random(16)));{Кездейсоқ
түс}
Line(Random(x2-x1), Random(y2-y1), Random(x2-x1), Random(y2-y1))
until KeyPressed;
if ReadKey=#0 then d:= ord(ReadKey); CloseGraph
end
end.
Достарыңызбен бөлісу: |