Grafika

bonus

uses graph;

uvádím jen stručný přehled některých procedur jednotky graph, úplný přehled viz. help Turbo Pascalu...


Arc (procedura) (jednotka Graph)

Kreslí kruhový oblouk od počátečního úhlu ke koncovému úhlu.

Deklarace

procedure Arc (X,Y; Integer; StAngle, EndAngle, Radius; Word);

Poznámky

Arc kreslí oblouk kolem středu (X,Y) s poloměrem Radius. Oblouk začíná v úhlu StAngle a končí v úhlu EndAngle, kreslí se aktuální barvou.

{Arc.PAS}

{Vzorový příklad pro proceduru Arc .}
uses Graph;
var
   Gd, Gm: Integer;
   Radius: Integer;
begin
   Gd := Detect;
   InitGraph(Gd, Gm,' ');
   if GraphResult <> grOk then
     Halt(1);
     for Radius := 1 to 5 do
         Arc(100, 100, 0, 90, Radius * 10);
      Readln;
      CloseGraph;
end.


Bar (procedura) (jednotka Graph)

Nakreslí sloupec použitím aktuálního stylu vyplňování a barvy.

Deklarace

procedure Bar(x1, y1, x2, y2: Integer);

Poznámky

Bar nakreslí vyplněný obdélník (používaný např. pro tvorbu sloupcových diagramů). Používá vzorek a barvu definované pomocí SetFillStyle nebo SetFillPattern. Pokud chcete nakreslit sloupec s orámovaným obrysem, zavolejte proceduru Bar3D s nulovou hloubkou.

{Bar.PAS}

{Vzorový příklad pro proceduru Bar .}

uses
       Graph;
var
       Gd, Gm, I, Width: Integer;
begin
         Gd := Detect; InitGraph(Gd, Gm,' ');
         if GraphResult <> grOk then Halt(1);
         Width := 10;
         for I := 1 to 5 do
              Bar(I*Width, I*10, Succ(I)*Width, 200);
         ReadLn;
         CloseGraph;
end.


Circle (procedura) (jednotka Graph)

Nakreslí kruh, přičemž jako střed použije (X, Y).

Deklarace

procedure Circle(X,Y: Integer; Radius: Word);

Poznámky

Kruh je kreslen v aktuální barvě, nastavené procedurou SetColor. Každý grafický řídící program (driver) obsahuje korekční poměr (aspect ratio), používaný procedurami Circle, Arc a PieSlice.

{Circle.PAS}

{Vzorový příklad pro proceduru Circle.}

uses Graph;
var
   Gd, Gm: Integer;
   Radius: Integer;
begin
   Gd := Detect;
   InitGraph(Gd, Gm, ' ');
   if GraphResult <> grOk then
          Halt(1);
   for Radius := 1 to 5 do
   Circle(100, 100, Radius * 10);
   Readln;
   CloseGraph;
end.


Ellipse (procedura) (jednotka Graph)

Nakreslí eliptický oblouk.

Deklarace

procedure Ellipse(X, Y: Integer; StAngle, EndAngle: Word; XRadius, YRadius: Word);

Poznámky

Nakreslí eliptický oblouk od počátečního úhlu StAngle ke koncovému úhlu EndAngle, přičemž jako střed použije (X, Y). XRadius a YRadius použije jako vodorovnou a svislou osu.

{Ellipse.PAS}

{Vzorový příklad pro proceduru Ellipse.}

uses Graph;
var Gd, Gm: Integer;
begin
  Gd := Detect;
  InitGraph(Gd, Gm, ' ');
  if GraphResult <> grOk then
     Halt(1);
  Ellipse(100, 100, 0, 360, 30, 50);
  Ellipse(100, 100, 0, 180, 50, 30);
  Readln;
  CloseGraph;
end.


Line (procedura) (jednotka Graph)

Nakreslí čáru z (X1, Y1) do (X2, Y2).

Deklarace

procedure Line(x1, y1, x2, y2: Integer);

Poznámky

Nakreslí čáru ve stylu a tloušťce, definované procedurou SetLineStyle, a použije barvu, nastavenou pomocí SetColor. Procedurou SetWriteMode můžete určit, zda se čára na obrazovku zkopíruje nebo nakreslí operací XOR.

Pamatujte, že
MoveTo(100, 100);
LineTo(200, 200);
je ekvivalentní s
Line(100, 100, 200, 200);
MoveTo(200, 200);

Použijte proceduru LineTo, když ukazatel pozice (CP) je na jednom konci budoucí čáry. Pokud chcete mít při nakreslení čáry automaticky aktualizovanou pozici CP, použijte LineRel pro kreslení úsečky do bodu daného relativními souřadnicovými rozdíly vůči CP. Line neaktualizuje CP.

{Line.PAS}

{Vzorový příklad pro proceduru Line.}
uses Crt, Graph;
var Gd, Gm: Integer;
begin
  Gd := Detect;
  InitGraph(Gd, Gm, ' ');
  if GraphResult <> grOk then
    Halt(1);
  Randomize;
  repeat
  Line(Random(200), Random(200), Random(200), Random(200));
  until KeyPressed;
  Readln;
  CloseGraph;
end.


SetColor (procedura) (jednotka Graph)

Nastaví aktuální kreslící barvu pomocí palety.

Deklarace

procedure SetColor(Color: Word);

Poznámky
SetColor(5) nastaví jako aktuální pátou barvu v paletě. Kreslící barvy nabývají hodnot od 0 do 15, v závislosti na aktuálním grafickém adaptéru a aktuálním grafickém režimu.
Nejvyšší platné číslo barvy pro aktuální driver a režim vrací funkce GetMaxColor.

{Getmxcol.PAS}

{Vzorový příklad pro funkce GetMaxColor a SetColor.}
uses
Crt, Graph;
var
GraphDriver, GraphMode : Integer;
begin
  GraphDriver := Detect;
  InitGraph(GraphDriver, GraphMode, ' ');
  if GraphResult <> grOk then Halt(1);
  Randomize;
  repeat
     SetColor(Random(GetMaxColor)+1);
     LineTo(Random(GetMaxX),
     Random(GetMaxY));
   until KeyPressed;
end.


PutPixel (procedura) (jednotka Graph)

Nakreslí bod na souřadnicích X, Y.
Deklarace
procedure PutPixel(X, Y: Integer; Pixel: Word);
Poznámky
Nakreslí bod v barvě, definované parametrem Pixel, v (X, Y).

{PutPixel.PAS}

{Vzorový příklad pro proceduru PutPixel.}
uses Crt, Graph;
var
Gd, Gm: Integer;
Color: Word;
begin
  Gd := Detect;
  InitGraph(Gd, Gm, ' ');
  if GraphResult <> grOk then
      Halt(1);
  Color := GetMaxColor;
  Randomize;
  repeat
     PutPixel(Random(100), Random(100), Color); { Vykreslí "hvězdy" }
     Delay(10);
   until KeyPressed;
   Readln;
   CloseGraph;
end.


SetTextStyle (procedura) (jednotka Graph)

Nastaví styl pro výstup textu v grafickém režimu.

Deklarace

procedure SetTextStyle(Font, Direction: Word; CharSize: Word);
Poznámky
Nastaví aktuální textový font, styl a činitel zvětšování znaků.

{Settxtst.PAS}

 

Styly textu - konstanty

Tyto konstanty mají vliv na procedury SetTextStyle a GetTextSettings.
Konstanta        Hodnota       Význam
DefaultFont      0                8x8   bitově mapovaný font
TriplexFont      1                Vektorový font
SmallFont         2                Vektorový font
SansSerifFont  3                Vektorový font
GothicFont       4                 Vektorový font
HorizDir          0                 Zleva doprava
VertDir            1                 Zespoda nahoru
UserCharSize   0                 Uživatelem definovaná velikost znaků

{Vzorový příklad pro proceduru SetTextStyle.}
uses Graph;
var
Gd, Gm: Integer;
Y, Size: Integer;
begin
  Gd := Detect;
  InitGraph(Gd, Gm, ' ');
  if GraphResult <> grOk then
    Halt(1);
  Y := 0;
  for Size := 1 to 4 do
  begin
    SetTextStyle(DefaultFont, HorizDir, Size);
    OutTextXY(0, Y, 'Size = ' + Chr(Size + 48));
    Inc(Y, TextHeight('H') + 1);
  end;
  Readln;
  CloseGraph;
end.


 

© 2001 Milan Volejník, http://hledej.to.zde.cz

aktualizace: 17.09.2002 17:25:34

Powered by Notepad editor.
Copyright © 2001 by !!!Protiproud!!! All rights reserved.
Revised: 17 IX 2002 17:49:11 +0200 .