Moduł Graph


Moduł Graph - Wprowadzenie

Jeśli nie znamy się na trybach ekranowych dostępnych z asemblera nie ma się czym przejmować. Poza tym, trzeba to powiedzieć sobie szczerze - programowanie w asemblerze jest znacznie żmudniejsze i trudniejsze.

Każda szanująca się firma produkująca kompilatory Pascala dołącza do niego potężny zestaw gotowych już funkcji i procedur graficznych dostępnych w module Graph. Na pewno go masz! Jeśli nie - możesz znaleźć go na wielu stronach i serwisach poświęconych programowaniu.

W pierwszym programiku wykorzystującym moduł Graph uruchomimy autotest a później zainicjujemy tryb graficzny odpowiadający naszej karcie graficznej.

Opiszę najważniejsze fragmenty programu:

Poniższa procedura wykrywa naszą kartę oraz tryb graficzny, który obsługuje.

DetectGraph(Karta,Tryb); { u mnie karta 9 - VSA, tryb 2 - VGAHi }

Po detekcji jest inicjalizacja. Poniższa procedura stawia już tylko przysłowiową kropkę nad i. Trzecim parametrem jest katalog, w którym znajdują się sterowniki graficzne i czcionki.

InitGraph(Karta,Tryb,'c:\bp\bgi');

Spójrzmy na prostą detekcję naszej karty graficznej i jej parametrów.

program detekcja;

uses graph;

var i,x,y : integer;

Karta, Tryb : Integer;

begin

DetectGraph(Karta,Tryb);

InitGraph(Karta,Tryb,'c:\bp\bgi');

{ jestesmy teraz 'wewnatrz' trybu graficznego }

x:= getmaxx;

y:= getmaxy;

CloseGraph;

writeln('Sterownik graficzny numer: ',Karta);

writeln('Tryb : ',Tryb);

writeln('Rozdzielczosc: ',x,' X ',y);

Readln;

end.

W kolejnym programie zaprezentuję procedurę PutPixel(z modułu Graph), jej parametrami są: pozycja X, pozycja Y, kolor zapisany jako łańcuch lub jako wartość liczbowa.

Program rysuje koło z wykorzystaniem funkcji sinus i cosinus.
Oczywiście w module Graph są gotowe funkcje rysujące koła etc.(o czym później), ale chciałem pokazać na jakiej zasadzie są one tworzone - wszystkie bowiem figury są opisywane przez równania matematyczne.

program kolo_sin_cos_biegunowo;

uses

graph,crt;

var i,x,y : integer;

Karta, Tryb : Integer;

begin

DetectGraph(Karta,Tryb); { u mnie karta 9 - VSA, tryb 2 - VGAHi }

InitGraph(Karta,Tryb,'c:\bp\bgi');

for i:=1 to 360 do

PutPixel(GetMaxX div 2+Round(SIN(i)*50), GetMaxY div 2+Round(COS(i)*50),Yellow);

Readln;

CloseGraph;

end.

Inicjalizacja trybu graficznego

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)

Operacje trybu graficznego

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: Intege
r;
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

Zamknięcie trybu graficznego

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



Wyszukiwarka

Podobne podstrony:
37 Moduł graph w Pascalu
modul graph procedury
modul I historia strategii2002
Komunikacja Moduł (2)
Moduł IV WŁADZA W013
MODUŁ POWIETRZE
Modul 1 Misja, strategia, planowanie
Modul 1 ZNACZENIE JAKOSCI
moduł losowości
Moduł III cz 2 stała i stopien dysocjacji, zobojetnianie
Modul 3 Podstawy elektroniki cyfrowej
Modul 1 matem Rady
modul 7
modul test
Moduł 7
Modul matem bibliografia

więcej podobnych podstron