Felhasználói eszközök

Eszközök a webhelyen


inf-prog-fszi:rajz_es_grafika

Különbségek

A kiválasztott változat és az aktuális verzió közötti különbségek a következők.

Összehasonlító nézet linkje

Előző változat mindkét oldalon Előző változat
Következő változat
Előző változat
inf-prog-fszi:rajz_es_grafika [2017/06/22 13:23]
beistvan
inf-prog-fszi:rajz_es_grafika [2017/06/23 11:51] (aktuális)
beistvan
Sor 1: Sor 1:
 +====== Rajz és grafika ======
 +
 +===== A grafikus program struktúrája =====
 +
 +1. A grafikus könyvtár becsatolása
 +<code pascal graphunit.pas>
 +uses graph;
 +</code>
 +
 +2. A grafikus meghajtó (driver) változójának deklarálása
 +<code pascal graphunit.pas>
 +var gd:integer; {smallint //DevPas}
 +</code>
 +
 +3. Grafikus üzemmód változójának deklarálása
 +<code pascal graphunit.pas>
 +var gm:integer; {smallint //DevPas}
 +</code>
 +
 +7. A grafikus üzemmódokat egyszerre is megadhatjuk
 +<code pascal graphinit.pas>
 +var gd, gm:integer; {smallint //DevPas}
 +</code>
 +
 +5. Grafikus meghajtó kiválasztása
 +<code pascal graphkivalaszt.pas>
 +gd:=Detect;
 +</code>
 +
 +6. A grafikus üzemmód inicializálása
 +<code pascal graphinit.pas>
 +InitGraph(gd,gm,'');
 +</code>
 +
 +7. Grafikus hiba feldolgozása
 +<code pascal graphhiba.pas>
 +if GraphResult<>GrOk then begin 
 +            Write('Grafikus hiba'); 
 +            Halt(1); 
 +      end;
 +</code>
 +
 +8. Rajzolás rajzolási parancsok
 +<code pascal grapheljarasok.pas>
 +{grafikus eljárások és függvények}
 +</code>
 +
 +9. Kilépés a grafikus üzemmódból
 +<code pascal graphbezar.pas>
 +CloseGraph;
 +</code>
 +
 +10. Grafikus program
 +<code pascal grafika.pas>
 + program grafika;
 + uses graph;
 +
 + var gd,gm:integer;
 +
 + begin 
 +      gd:=Detect; 
 +      InitGraph(gd,gm,''); 
 +      if GraphResult<>GrOk then begin 
 +            Write('Grafikus hiba'); 
 +            Halt(1); 
 +      end;
 +
 +     {grafikus eljárások és függvények}
 +
 +      CloseGraph; 
 + end.
 +</code>
 +
 +===== A grafikus parancsok =====
 +
 +**Grafikus kurzor pozicionálása**
 +
 +''GetX : integer''                                                                  A grafikus kurzor aktuális pozíciójának x koordinátája.
 +
 +''GetY : integer''                                                                   A grafikus kurzor aktuális pozíciójának y koordinátája.
 +
 +''GetMaxX : integer''                                                           A képernyõ legnagyobb x koordinátája.
 +
 +''GetMaxY : integer''                                                          A képernyõ legnagyobb y koordinátája.
 +
 +''MoveTo(x,y: integer);''                                                      A grafikus kurzor pozícionálása az (x,y) pontra.
 +
 +''MoveRel(dx,dy: integer);''                                                 A grafikus kurzor eltolása (dx,dy) koordinátákkal. 
 +
 +**Képernyőablak**
 +
 +''SetActivePage(Page: word);''                                            Kijelöli a képernyõ aktív lapját.
 +
 +''SetVisualPage(Page: word);''                                            Megjeleníti a megadott lapot.
 +
 +''ClearDevice;''                                                                   Letörli az aktív képernyõ tartalmát.
 +
 +''ClearViewPort;''                                                                Letörli az aktuális ablak tartalmát.
 +
 +''SetViewPort(x1,y1,x2,y2: integer; Clip: boolean);''             Aktuális ablak kijelölése a képernyõn.
 +
 +''GetViewSettings(var ViewPort: ViewPortType); ''             Aktuális ablak adatainak lekérdezése. 
 + 
 +
 +**Pont**
 +
 +''PutPixel(x,y: integer; Pixel: word); ''                                     Pontot rajzol a megadott színnel.
 +
 +''GetPixel(x,y: integer): word ''                                            Az (x,y) pont színe. 
 + 
 +
 +**Vonal**
 +
 +''Line(x1,y1,x2,y2: integer);  ''                                                Vonalat rajzol két pont között.
 +
 +''LineTo(x,y: integer); ''                                                          Vonalat húz az (x,y) pontba.
 +
 +''LineRel(dx,dy: integer); ''                                                     Vonalat húz a (dx,dy) távolságra lévõ pontba.
 +
 +''SetWriteMode(WriteMode: integer);  ''                                Vonalrajzolás módjának beállítása.
 +
 +''SetLineStyle(LineStyle,Pattern,Width: word); ''                     Vonal típusának beállítása.
 +
 +''GetLineSettings(var LineInfo: LineSettingsType);  ''              Vonal adatainak lekérdezése. 
 + 
 +
 +**Poligon**
 +
 +''Rectangle(x1,y1,x2,y2: integer);''                                           Téglalapot rajzol.
 +
 +''Bar(x1,y1,x2,y2: integer);''                                                      Kitöltött téglalapot rajzol.
 +
 +''Bar3D(x1,y1,x2,y2: integer; Depth: word; Top: boolean);''      Téglatestet rajzol adott mélységgel.
 +
 +''DrawPoly(NumPoints: word; var PolyPoints);''                        Sokszöget rajzol.
 +
 +''FillPoly(NumPoints: word; var PolyPoints);''                            Kitöltött sokszöget rajzol. 
 + 
 +
 +**Kör, ellipszis**
 +
 +''Circle(x,y: integer; Radius: word);'' Kört rajzol (x,y) középponttal és adott sugárral.
 +
 +''Arc(x,y: integer; StAngle,EndAngle,Radius: word);'' Körívet rajzol (x,y) középponttal  a megadott kezdõszög és végszög között.
 +
 +''PieSlice(x,y: integer; StAngle,EndAngle,Radius: word);'' Körcikket rajzol és kitölti.
 +
 +''Ellipse(x,y: integer; StAngle,EndAngle,XRadius,YRadius: word);'' Ellipszis ívet rajzol.
 +
 +''FillEllipse(x,y: integer; XRadius,YRadius: word);'' Teljes ellipszist rajzol és kitölti.
 +
 +''Sector(x,y: integer; StAngle,EndAngle,XRadius,YRadius: word);'' Ellipszis cikket rajzol és kitölti.
 +
 +''GetArcCoords(var ArcCoords: ArcCoordsType);'' Az utoljára rajzolt ív kezdõ- és végkoordinátáit adja vissza.
 +
 +''SetAspectRatio(xasp,yasp: word);'' A beépített oldalarányok megváltoztatása.
 +
 +''GetAspectRatio(var xasp,yasp: word);'' A beépített oldalarányok értékével tér vissza.
 +
 +**Kitöltés**
 +
 +''FloodFill(x,y: integer; Border: word);'' Az (x,y) ponttól kezdve kitölti a Borderben megadott színnel körbezárt területet.
 +
 +''SetFillStyle(Pattern,Color: word);'' Beállítja a kitöltés mintáját és színét.
 +
 +''SetFillPattern(Pattern: FillPatternType; Color: word);'' A felhasználó által definiált minta (8 byte) és szín beállítása.
 +
 +''GetFillPattern(var FillPattern: FillPatternType);'' A felhasználó által definiált mintát és színt adja vissza.
 +
 +''GetFillSettings(var FillInfo: FillSettingsType);'' Az aktuális kitöltés mintáját és színét adja vissza. 
 + 
 +
 +**Szín**
 +
 +''SetBkColor(Color: word); '' Beállítja a háttér színét.
 +
 +''SetColor(Color: word); '' Beállítja a rajzolás színét.
 +
 +''GetBkColor(Color: word);'' Az aktuális háttérszínt adja vissza.
 +
 +''GetColor(Color: word);'' A rajzolás aktuális színét adja vissza.
 +
 +''SetAllPalette(var Palette: PaletteType);'' Az alappaletta színeinek beállítása. 
 +  
 +''SetPalette(ColorNum,Color: word);'' Adott szín sorszámának megváltoztatása.
 +
 +''GetPalette(var Palette: PaletteType);'' Az aktuális paletta értékeivel tér vissza.
 +
 +''GetPaletteSize: integer'' Az aktuális paletta méretével tér vissza.
 +
 +''GetMaxColor: word '' A maximálisan felhasználható színek száma. 
 + 
 +
 +**Szöveg**
 +
 +''OutText(TextString: string); '' Szöveget ír a képernyőre.
 +
 +''OutTextXY(x,y: integer; TextString: string);  '' Szöveget ír a képernyőre (x,y) ponttól kezdve.
 +
 +''SetTextStyle(Font,Direction,CharSize: word); '' A betű típusának, méretének, és a kiírás irányának beállítása.
 +
 +''SetTextJustify(Horiz,Vert: word); '' A szöveg igazítása a kiírás kezdőpontjához.
 +
 +''GetTextSettings(var TextInfo: TextSettingsType);'' A szövegkiírás aktuális beállításait adja vissza.
 +
 +''TextHeight(TextString: string): word'' Betű magasságát adja vissza.
 +
 +''TextWidth(TextString: string): word'' Szöveg hosszát adja vissza. 
 + 
 +
 +**Bittérkép**
 +
 +''ImageSize(x1,y1,x2,y2: integer): word '' A képablak méretét adja vissza byte-ban.
 +
 +''GetImage(x1,y1,x2,y2: integer; var BitMap); '' A paraméterként megadott képablakot menti el a pufferbe.
 +
 +''PutImage(x,y: integer; var BitMap; BitBlt: word); '' A puffer tartalmát tölti be az (x,y) ponttól kezdve. 
 +
 +<code pascal rajz.pas>
 +program rajz;
 +uses graph;
 +var gd,gm: smallint;  {integer}
 +begin
 +  gd := Detect;
 +  InitGraph(gd, gm, '');
 +  if GraphResult <> GrOk then begin
 +    Write('Grafikus hiba');
 +    Readln;
 +    Halt(1);
 +  end;
 +  SetColor(Green);
 +  Line(10, 20, 100, 200);
 +  SetColor(Red);
 +  Rectangle(5, 15, 105, 205);
 +  SetColor(Yellow);
 +  Circle(65, 50, 30);
 +  PutPixel(65, 50, White);
 +  Readln;
 +  CloseGraph;
 +end.
 +
 +</code>
 +
 +<code pascal grafika.pas>
 +program grafika; 
 + uses graph;
 + var gd,gm:smallint;  {DOS-ban gd,gm:integer;}
 +     i:integer;
 + begin gd:=VGA; gm:=VGAHI; InitGraph(gd,gm,'');
 +      if GraphResult<>GrOk then begin Write('Grafikus hiba'); Halt(1); end;
 +      {grafikus eljárások és függvények}
 +      for i:=1 to 10 do
 +        circle(200,200,180-i*10);
 +      line(200,200,30,200);
 +      line(200,200,200,30);
 +      moverel(25,25);linerel(30,30);
 +      moverel(0,-30);linerel(-30,30);
 +      OutTextXY(10,300,'Hello!');
 +      Rectangle(20,20,60,60);
 +      SetFillStyle(SolidFill,Green);
 +      FloodFill(199,199,White);
 +      SetFillStyle(HatchFill,Yellow);
 +      for i:=1 to 4 do
 +        FloodFill(20+i*20+2,198,White);
 +      readln;
 +      CloseGraph; 
 + end.
 +</code>
 +
 +
 +<code pascal snake.pas>
 +program snake;
 +uses crt;
 +const bal=#75; fel=#72; jobb=#77; le=#80; esc=#27; max_hossz=200;
 +var x,y,dx,dy,i,j,hossz:integer; ch:char;
 +    xk,yk:array[1..max_hossz]of integer;
 +begin
 +  {játéktér}
 +  for i:=2 to 78 do begin gotoxy(i,2);write('#'); gotoxy(i,24);write('#');end;
 +  for i:=3 to 23 do begin gotoxy(2,i);write('#'); gotoxy(78,i);write('#');end;
 +  i:=1; x:=10; y:=10; dx:=1; dy:=0; xk[i]:=x; yk[i]:=y; hossz:=5;
 +  repeat
 +    if keypressed then begin ch:=readkey;
 +         if ch=#0 then ch:=readkey; end;
 +    case ch of
 +     bal: begin dx:=-1; dy:= 0; end;
 +     fel: begin dx:= 0; dy:=-1; end;
 +     jobb:begin dx:= 1; dy:= 0; end;
 +     le:  begin dx:= 0; dy:= 1; end;
 +    end;
 +    x:=x+dx; y:=y+dy;
 +    if (x<2)or(x>78)or(y<2)or(y>24) then
 +       begin gotoxy(4,25);write('VEGE! <ENTER> - kilepes!'); readln; exit; end;
 +    gotoxy(x,y); write('O');
 +    if i<=hossz then i:=i+1 else i:=1;
 +    if i<=hossz then j:=i+1 else j:=1;
 +    xk[i]:=x; yk[i]:=y;
 +    gotoxy(xk[j],yk[j]); write(' ');
 +    delay(300);
 +  until ch=esc;
 +end.
 +
 +</code>
 +
 +
 +<code pascal pontok.pas>
 +program pontok;
 +uses graph;
 +var gd,gm:smallint;  i,j,x,y,c:integer;
 +begin
 + gd:=detect;
 + initgraph(gd,gm,'');
 +
 + rectangle(0,0,200,200);    {négyzet}
 + line(0,0,200,200);         {foátló}
 + line(0,200,200,0);         {mellékátló}
 + Randomize;
 +
 + for i:=1 to 8000 do begin
 +  x:=1+random(198);        {véletlen számok 1-199ig}
 +  y:=1+random(198);
 +  c:=1+random(14);
 +  if (x>y)and(x+y>200+1)then  PutPixel(x,y,red);
 +  if (x>y)and(x+y<200+1)then  PutPixel(x,y,blue);
 +  if (x<y)and(x+y>200+1)then  PutPixel(x,y,green);
 +  if (x<y)and(x+y<200+1)then  PutPixel(x,y,yellow);
 + end;
 +
 + {PutPixel(10,10,green);
 + for i:=1 to 10 do
 +  for j:=1 to 10 do
 +   PutPixel(10+i,10+j,green);
 + }
 + readln;
 + closegraph;
 +end.
 +</code>
 +
 +
 +<code pascal animacio.pas>
 +program animacio;
 +uses graph,crt;
 +var gd,gm:smallint;  i:integer;
 +begin
 + gd:=detect;
 + initgraph(gd,gm,'');
 + setcolor(yellow);
 + circle(50,50,40);
 + OutTextXY(10,150,'Animacio!');
 + for i:=0 to 400 do
 + begin
 +   setcolor(yellow);
 +   circle(50+i,50,40);
 +   delay(50);
 +   setcolor(black);
 +   circle(50+i,50,40);
 + end;
 + OutTextXY(80,150,'Vege!');
 + readln;
 + closegraph;
 +end.
 +</code>
 +