Grafika w Turbo Pascal'u 1, Grafika w Turbo Pascal'u


Grafika w Turbo Pascal'u

Turbo Pascal - Moduł standardowy GRAPH


Moduł Graph zawiera ponad 70 procedur i funkcji standardowych, obsługuje grafikę ekranową. Procededury i funkcje tego modułu pozwalają rysować na ekranie krzywe różnych kształtów i kolorów, wypełniać kontury określonym kolorem, a także wprowadzać na ekran napisy (poziomo i pionowo) w różnych krojach pisma, z możliwością ich zmniejszania i powiększania.
Wykorzystanie standardowych procedur i funkcji modułu Graph wymaga jego deklaracji za pomocą słowa kluczowego uses. Przed wywołaniem pierwszej funkcji lub procedury graficznej moduł Graph powinien zostać zainicjowany przez wywołanie procedury InitGraph, która ładuje do pamięci i inicjuje odpowiedni sterownik.

Przykład:

InitGraph(karta,tryb,\'c:\TP\bgi\');

Na zakończenie wykonywania operacji graficznych, powinna być wywołana procedura CloseGraph, która powoduje usunięcie z pamięci sterownika i powrót do poprzedniego trybu.

Ekran w trybie graficznym posiada inny układ wspólrzędnych niż w trybie tekstowym. Każdy punkt tego ekranu posiada swoje współrzędne, przy czym punkt znajdujący się w lewym górnym narożniku oznaczony jest jako (0,0). Liczba punktów ekranu wzdłuż osi x i y zależy od monitora i obsługującej go karty graficznej.

1. Predefiniowane identyfikatory modułu Graph

- stałe definiujące sterowniki

Jeden z parametrów procedury InitGraph definiuje sterownik obsługujący kartę graficzną.

- stałe trybów graficznych ekranu

Stałe te służą do oznaczania trybów graficznych ekranu wykorzystywanych przez moduł Graph. Poszczególne tryby są ściśle związane z rodzajem karty graficznej.

2. Procedury inicjujące i zamykające tryb graficzny

- procedura DetectGraph

Procedura ta służy do sprawdzenia sprzętu komputerowego i określenia właściwego dla niego sterownika, jak również graficznego trybu pracy ekranu.

DetectGraph (karta,tryb);

Oba argumenty wywołania muszą być zmiennymi typu Integer. Zmiennej karta zostanie przypisania wartość określająca sterownik do obsługi karty graficznej, zmiennej tryb - wartość określająca tryb graficzny wysokiej rozdzielczości.

Przykład

Program PR1;
uses Graph;
var karta,tryb : Integer;
begin
DetectGraph (karta,tryb);
Writeln (\' karta = \', karta,\' tryb = \',tryb);
readln
end.

- procedura InitGraph

InitGraph(karta,tryb,skorowidz);

Trzeci argument wywołania procedury InitGraph jest łańcuchem określającym ścieżkę dostępu do katalogu, w którym znajduje się dany sterownik.
Jeśli wartością zmiennej karta jest Detect (wartość zmiennej tryb może być dowolna) to wywołanie procedury powoduje automatyczny wybór sterownika i trybu pracy ekranu.

- procedura CloseGraph

Jest to procedura bezparametrowa, która służy do zakończenia pracy w trybie graficznym. Usuwa sterownik z pamięci operacyjnej komputera i powraca do poprzedniego trybu pracy ekranu.

Struktura typowego programu graficznego

Program nazwa;
uses Graph;
.....................................
begin
......................................
InitGraph (argumenty);
....................................
CloseGraph
end.

1. Inicjalizacja trybu graficznego
2. Operacje trybu graficznego
3. Zamknięcie trybu graficznego

Ad. 1

InitGraph (Sterownik: Integer, Tryb: Integer, Ścieżka: String);
sterownik - identyfikator karty sterownika graficznego;
tryb - tryb graficzny (rozdzielczość, ilość kolorów);
ścieżka - katalog, w którym znajduje się sterownik *.bgi
inicjalizuje tryb graficzny
Detect/0;
wykrywa kartę graficzną
GraphResult: Integer;
wynik zainicjowania trybu graficznego
(jeśli jest grOk, to w porządku)

Ad. 2

Arc (X,Y; Integer; StAngle, EndAngle, Radius; Word);
łuk, wycinek okręgu
Bar (x1, y1, x2, y2: Integer);
prostokąt, „słupek” - np. dla wykresów słupkowych
Bar3D (x1, y1, x2, y2: Integer; Depth: Word; Top: Boolean);
słupek „trójwymiarowy”
Circle (X,Y: Integer; Radius: Word);
rysuje okrąg
ClearDevice (X,Y: Integer; Radius: Word);
czyszczenie ekranu graficznego
ClearViewPort;
czyszczenie okna (część ekranu), w trybie graficznym
DetectGraph;
sprawdza jaką kartę graficzną mamy do dyspozycji i w którym trybie graficznym właśnie pracujemy
DrawPoly (NumPoints: Word; var PolyPoints);
rysuje wielokąt
Ellipse(X, Y: Integer; StAngle, EndAngle: Word; XRadius, YRadius: Word);
rysuje elipsę
FillEllipse (X, Y: Integer; XRadius, YRadius: Word);
rysuje elipsę wypełnioną wewnątrz
FillPoly (NumPoints: Word; var PolyPoints);
rysuje wielokąt wypełniony wewnątrz
FloodFill (X, Y: Integer; Border: Word);
wypełnia zamknięty (ograniczony liniami o innym kolorze) region ekranu
wcześniej trzeba wypełnić kolor i wzór „wypełniacza”
GetArcCoords (var ArcCoords: _ArcCoordsType_);
podaje współrzędne ostatnio rysowanego łuku
GetAspectRatio (var Xasp, Yasp: Word);
zwraca współczynniki „skali rysunku” (aspect ratio); ponieważ proporcje rozdzielczości (w pikselach) po poziomej osi X i po pionowej osi Y są różne dla różnych kart graficznych, pozwala na skalowanie rysunku
GetBkColor: Word;
podaje bieżący kolor tła
GetColor: Word;
podaje bieżący kolor rysowania
GetDefaultPalette (var Palette: PaletteType);
ustawia domyślną paletę kolorów
GetDriverName: String;
podaje nazwę sterownika graficznego (karty)
GetFillPattern (var FillPattern: FillPatternType);
podaje bieżący wzorek „wypełniacza”
GetFillSettings (var FillInfo: FillSettingsType);
podaje bieżący kolor i wzorek „wypełniacza”
GetGraphMode: Integer;
podaje bieżący tryb graficzny
GetImage (x1, y1, x2, y2: Integer; var BitMap);
zapamiętuje rysunek
GetLineSettings (var LineInfo: LineSettingsType);
podaje bieżący styl linii (ciągła, przerywana, grubość itp.)
GetMaxColor: Word;
podaje najwyższy dostępny numer koloru
GetMaxMode: Integer;
podaje najwyższy dostępny tryb graficzny
GetMaxX: Integer;
podaje maksymalną wartość współrzędnej X na ekranie
GetMaxY: Integer;
podaje maksymalną wartość współrzędnej Y na ekranie
GetModeName (ModeNumber: Integer): string;
podaje nazwę trybu graficznego
GetModeRange (GraphDriver:Integer; var LoMode, HiMode:Integer);
podaje zakres dostępnych trybów graficznych
GetPalette (var Palette: PaletteType);
podaje bieżącą paletę kolorów
GetPaletteSize: Integer;
podaje wielkość palety kolorów
GetPixel (X,Y: Integer): Word;
podaje stan wskazanego punktu na ekranie (jaki ma kolor?)
GetTextSettings (var TextInfo: TextSettingsType);
podaje bieżące ustawienia do wprowadzania tekstu (współrzędne, kolor, czcionka itp.)
GetViewSettings (var ViewPort: ViewPortType);
podaje parametry bieżącego okna graficznego (View Port Settings)
GetX: Integer;
podaje bieżącą współrzędną X kursora graficznego (niewidocznego)
GetY: Integer;
podaje bieżącą współrzędną Y kursora graficznego (niewidocznego)
GraphDefaults;
wraca do domyślnych ustawień trybu graficznego, ustawia kursor graficzny w punkcie (0,0)
GraphErrorMsg (ErrorCode: Integer): string;
podaje komunikat o błędzie grafiki z zadanym numerem
ImageSize (x1, y1, x2, y2: Integer): Word;
wielkość rysunku
InstallUserDriver (Name: string; AutoDetectPtr: pointer): integer;
instaluje sterownik graficzny użytkownika
InstallUserFont (FontFileName: string ): Integer;
instaluje czcionki graficzne użytkownika
Line (x1, y1, x2, y2: Integer);
rysuje linię prostą
LineRel (Dx, Dy: Integer);
rysuje linię prostą relatywnie do bieżącej pozycji kursora graficznego
LineTo (X, Y: Integer);
rysuje linię od bieżącego położenia kursora do wskazanego punktu
MoveRel (Dx, Dy: Integer);
przesuwa kursor graficzny relatywnie (w stosunku do pozycji początkowej)
MoveTo (X, Y: Integer);
przesuwa kursor graficzny do wskazanego punktu
OutText (TextString: string);
wyprowadza tekst
OutTextXY (X,Y: Integer; TextString: string);
wyprowadza tekst począwszy od punktu o zadanych współrzędnych X i Y
PieSlice (X, Y: Integer; StAngle, EndAngle, Radius: Word);
rysuje wycinek wykresu kołowego
PutImage (X, Y: Integer; var BitMap; BitBlt: Word);
wstawia na ekran rysunek
PutPixel (X, Y: Integer; Pixel: Word);
zapala punkt na ekranie
Rectangle (x1, y1, x2, y2: Integer);
rysuje prostokąt
RegisterBGIDriver (driver: pointer): Integer;
rejestruje sterownik graficzny BGI
RegisterBGIFont (Font: pointer): Integer;
rejestruje czcionki dla środowiska DOS
RestoreCrtMode;
wraca do trybu tekstowego (zwykle na chwilę)
Sector (x, y: Integer; StAngle,EndAngle, XRadius, YRadius: Word);
rysuje wypełniony wycinek elipsy/okręgu
SetActivePage (Page: Word);
wybiera aktywną stronę (czyli taką, na której odbywa się rysowanie); wszystkie operacje mogą odbywać się wyłącznie w pamięci; Visual/Visible Page - strona na bieżąco odwzorowywana na ekranie
SetAllPalette (var Palette);
zmienia wszystkie kolory palety na podane
SetAspectRatio (Xasp, Yasp: Word): Word;
ustawia skalę rysunku
SetBkColor (ColorNum: Word);
ustawia kolor tła
SetColor (Color: Word);
ustawia kolor rysunku
SetFillPattern (Pattern: FillPatternType; Color: Word);
ustawia wzór “wypełniacza” wnętrza figur i regionów
SetFillStyle (Pattern: Word; Color: Word);
ustawia rodzaj „wypełniacza”
SetGraphBufSize (BufSize: Word);
ustawia wielkość bufora pamięci dla grafiki
SetGraphMode (Mode: Integer);
włącza tryb graficzny
SetLineStyle (LineStyle: Word; Pattern: Word; Thickness: Word);
ustawia rodzaj linii (ciągła, przerywana, gruba itp.)
SetPalette (ColorNum: Word; Color: Shortint);
ustawia stosowaną paletę barw
SetRGBPalette (ColorNum, RedValue, GreenValue, BlueValue: Integer);
ustawia paletę trójskładnikową (R=Red, G=Green, B=Blue)
SetTextJustify (Horiz, Vert: Word);
ustawia sposób wyrównywania tekstu
SetTextStyle (Font, Direction: Word; CharSize: Word);
ustawia styl tekstu
SetUserCharSize (MultX, DivX, MultY, DivY: Word);
ustawia wielkość czcionek użytkownika
SetViewPort (x1, y1, x2, y2: Integer; Clip: Boolean);
ustawia okno graficzne na ekranie
SetVisualPage (Page: Word);
wybiera stronicę pamięci karty widoczną na ekranie
SetWriteMode (WriteMode: Integer);
ustawia tryb „nadrysowywania” na poprzedni rysunek
TextHight (TextString: string): Word;
ustawia wysokość tekstu
TextWidth (TextString: string): Word;
ustawia szerokość tekstu

Ad. 3

CloseGraph;
zamyka tryb graficzny (powrót do trybu tekstowego)



Wyszukiwarka