background image

Moduł  Graph 

 

Moduł Graph obsługuje operacje ekranowej grafiki punktowej (pikselowej). 

Zawiera on procedury i funkcje, które umoŜliwiają rysowanie na ekranie monitora 
krzywych róŜnych kształtów i kolorów, wypełnianie obszarów określonym wzorem i 
kolorem jak równieŜ wykreślanie tekstów o zdefiniowanej przez uŜytkownika wielkości 
wybraną czcionką w poziomie lub pionie. Umiejętne wykorzystanie zasobów modułu 
pozwala równieŜ na tworzenie rysunków animowanych 
 

Z przewaŜającej większości procedur i funkcji moŜna korzystać dopiero po 

zainicjowaniu graficznego trybu pracy monitora (procedura InitGraph). 
Przejście do trybu graficznego powoduje przydzielenie części pamięci operacyjnej dla 
potrzeb realizacji operacji graficznych. Po zakończeniu ich wykonywania naleŜy 
zwolnić tę część pamięci i przywrócić poprzedni tryb tekstowy za pomocą procedury 
CloseGraph. 
 

Dla prawidłowej pracy monitora w trybie graficznym potrzebne są programy 

obsługujące zainstalowaną w komputerze kartę graficzną. Programy takie nazwano 
sterownikami (ang. Drivers). W systemie TP zdefiniowano sterowniki dla 8 
najpopularniejszych kart graficznych komputerów klasy IBM: CGA, MCGA, EGA, 
VGA, Hercules, ATT400, IBM8514, IBM3270PC. Sterownikom tym nadano 
rozszerzenie BGI (Borland Graphics Interface). 
 
Okno graficzne 
 

Wszystkie operacje graficzne wykonywane są w obrębie okna graficznego. W 

momencie inicjacji trybu graficznego okno zajmuje cały ekran. Lewy, górny róg ekranu 
ma współrzędne (0,0) i jest początkiem układu, którego oś pionowa jest skierowana w 
dół, a oś pozioma - w prawo. Współrzędne prawego dolnego rogu są określone przez 
funkcje GetMaxX i GetMaxY i zaleŜą od rozdzielczości ekranu i jego trybu pracy. 
Rozdzielczość ekranu, mająca istotny wpływ na współczynnik kształtu obrazu (ang. 
aspect ratio), jest definiowana przez rodzaj monitora i rodzaj obsługującej go karty 
graficznej. 
 

UŜytkownik ma moŜliwość definiowania wielkości i połoŜenia okna 

graficznego w obrębie ekranu i wykonywania w ramach tego okna operacji graficznych. 
 

Kursor graficzny jest niewidoczny i w chwili określenia okna graficznego lub 

inicjacji trybu graficznego umieszczany w punkcie (0,0). 
 

KaŜdy punkt moŜe być „zapalony” lub „zgaszony” - wtedy odpowiadający mu 

bit zmiennej wzorca ekranu ma wartość odpowiednio 1 

 0. 

 
Rodzaje krojów czcionki. 
 

W celu wykreślenia na ekranie graficznym tekstów moŜna skorzystać z 5 

rodzajów czcionek (ang. fonts), udostępnionych przez moduł Graph. Jedna z nich jest 
czcionką punktową (ang. 8x8 bit - mapped), pozostałe są czcionkami kreskowymi (ang. 

stroked). Pierwszy rodzaj czcionki jest zdefiniowany jako macierz o wym. 8x8 
punktów. Czcionki kreskowe to ciąg wektorów, który informuje system o tym jak mają 
być rysowane jej znaki. Jakość tekstu czcionki kreskowej jest lepsza, szczególnie przy 
wyprowadzaniu duŜych napisów. 
 

Definicja czcionki punktowej ładowana jest do pamięci operacyjnej w trakcie 

inicjacji trybu graficznego i rezyduje w niej do momentu wykonania procedury 
CloseGraph. Definicja wybranej czcionki kreskowej umieszczana jest w pamięci tylko 
wtedy, jeśli jest do niej odwołanie w procedurze SetTextStyle, a usuwana przy 
odwołaniu się do innego kroju czcionki. UŜytkownik ma moŜliwość uczynienia kroju 
czcionek rezydentnym (por. opis procedury RegisterBGIfont).  
 

Stałe kolorów 

Identyfikator 

Wartość 

Kolor 

Black 

Czarny 

Blue 

Niebieski 

Green 

Zielony 

Cyan 

Morski 

Red 

Czerwony 

Magenta 

Fioletowy 

Brown 

Brązowy 

LightGray 

Jasnoszary 

DarkGray 

Ciemnoszary 

LightBlue 

Jasnoniebieski 

LightGreen 

10 

Jasnozielony 

LightCyan 

11 

Jasnomorski 

LightRed 

12 

Jasnoczerwony 

LightMagenta 

13 

Jasnofioletowy 

Yellow 

14 

śółty 

White 

15 

Biały 

 

Stałe rodzajów linii 

 

Identyfikator 

Wartość 

Wzorzec 

SolidLn 

linia ciągła 

DottedLn 

linia kropkowana 

CenterLn 

linia przerywana 

DashedLn 

linia przerywana 

UsesBitLn 

wzorzec definiowany 

przez uŜytkownika 

 
 

background image

 

Grubość linii 

Identyfikator 

Wartość  

Grubość 

NormWidth 

normalna(domyślna) 

ThickWidth 

pogrubiona 

tałe sposobu wykreślania tekstów 

Identyfikator 

Wartość 

Znaczenie 

HorizDir 

poziomo - od lewej do prawej 

VertDir 

pionowo - od dołu do góry 

 

Stałe justowania 

Justowanie jest pojęciem stosowanym przy określaniu sposobu wykreślania tekstu i 
oznacza wstawianie odstępów między znakami, wyrazami i wierszami  dla zachowania 
odpowiedniej wielkości szpalty. Pojęcie to uŜywane jest wymiennie z pojęciem 
wyrównywania lub centrowania. 

Identyfikator 

Wartość 

Znaczenie 

LeftText 

Wyrównywanie do lewej 

CenterText 

Centrowanie w poziomie 

RightText 

Wyrównywanie do prawej 

BottomText 

Wyrównywanie do dołu 

CenterText 

Centrowanie w pionie 

TopText 

Wyrównywanie do góry 

 

Stałe wzorca wypełnienia 

 

Stosowane przy określaniu sposobu wypełniania obszarów i uŜywane w 

wywołaniu procedur: GetFillSettings i SetFillStyle

Identyfikator 

Wartość 

Wzorzec 

EmptyFill 

brak wypełnienia 

SolidFill 

wypełnienie pełne 

LineFill 

w poziome linie 

LtSlashFill 

ukośne linie 

SlashFill 

ukośne linie 

BkSlashFill 

ukośne linie 

LtBkSlashFill 

ukośne linie 

HatchFill 

kratka 

XHatchFill 

kratka ukośna 

InterleaveFill 

falowane pionowe linie 

WideDotFill 

10 

kropki 

CloseDotFi;; 

11 

gęste kropki 

UserFill 

12 

wzorzec definiowany przez 

uŜytkownika 

 

Stałe kroju czcionki 

 

Identyfikator 

Wartość 

Wzorzec 

DefaultFont 

 

TriplexFont 

 

SmallFont 

 

SansSerifFont 

 

GothicFont 

 

 

Funkcje i procedury modułu Graph 

 
Funkcje i procedury organizacyjne:
 

CloseGraph 

zakończenie pracy w trybie graficznym 

DetectGraph(sterownik,tryb) 

rozpoznanie karty graficznej 

GraphDefaults 

wznowienie domyślnego środowiska 
graficznego 

GraphResult 

ujawnienie kodu błędu operacji graficznej 

GraphErrorMsg(kod_błędu) 

udostępnienie komunikatu o błędzie operacji 
graficznej 

InitGraph(sterownik, tryb, 
skorowidz) 

zainicjowanie trybu graficznego 

InstallUserDriver 

instalowanie nowego sterownika 

InstallUserFont 

instalowanie nowego fontu 

RegisterBGIdriver(sterownik) 

zarejestrowanie programu obsługi karty 
graficznej 

RegisterBGIfont(krój) 

zarejestrowanie programu czcionki kreskowej 

RestoreCrtMode 

przywrócenie trybu tekstowego 

SetGraphBufSize 

określenie rozmiaru bufora dla wypełniania 
obszarów 

SetGraphMode(tryb) 

ustanowienie graficznego trybu pracy 

Funkcje i procedury obrazowe: 

 
GetImage(x1, y1, x2, y2, obraz)  zapamiętanie obrazu graficznego 
ImageSize(x1, y1, x2, y2) 

wyznaczenie rozmiaru pamięci potrzebnego 
dla przechowania obrazu 

PutImage(X, Y, obraz, 

wyświetlenie zapamiętanego obrazu 

background image

operacja) 

graficznego 

Funkcje i procedury informujące o środowisku 
graficznym:
 
 

GetDriverName 

ujawnienie nazwy sterownika graficznego 

GetGraphMode 

ujawnienie numeru bieŜącego trybu 
graficznego 

GetMaxMode 

ujawnienie najwyŜszego trybu graficznego 

GetModeName(numer_trybu) 

ujawnienie nazwy trybu graficznego 

GetModeRange(sterownik, 
trb_min, tryb_max) 

określenie skrajnych wartości trybu 
graficznego wyspecjalizowanego sterownika 

 
Funkcje i procedury informujące o parametrach 
graficznych: 
 

GetAspectRatio 

ujawnienie współczynnika kształtu ekranu 

GetArcCoords 

ujawnienie współrzędnych łuku 

GetBkColor 

wyznaczenie numeru koloru tła 

GetColor 

wyznaczenie numeru koloru atramentu 

GetDefautPalette 

ujawnienie liczby kolorów i ich numerów w 
palecie domyślnej 

GetFillPattern 

udostępnienie wzorca wypełnienia 

GetFillSettings 

udostępnienie wzorca i koloru wypełnienia 

GetLineSettings 

udostępnienie wzorca linii 

GetMaxColor 

wyznaczenie maksymalnego numeru koloru 
palety 

GetPalette 

udostępnienie informacji o kolorach i 
rozmiarze palety 

GetPaletteSize 

ujawnienie rozmiaru palety bieŜącego trybu 
graficznego 

Procedury ustalające parametry graficzne: 
 

SetAllPalette(paleta) 

zdefiniowanie kolorów palett 

SetAspectRatio(szerokość,wyso
kość) 

ustalenie współczynników kształtu obrazu 

SetBkColor(kolor) 

ustalenie koloru tła trybu graficznego 

SetColor(kolor) 

ustalenie koloru atramentu trybu graficznego 

SetFillPattern(wzór 
zdefiniowany,kolor) 

zdefiniowanie wzorca wypełnienia 

SetFillStyle(wzór, kolor) 

wybór wzorca wypełnienia 

SetLineStyle(rodzaj linii, wzór, 
grubość) 

ustalenie wzorca linii 

SetPalette(nr_koloru, kolor) 

zmiana koloru w palecie karty graficznej 

SetRGBPalette(nr_koloru, 
czerwony, zielony, niebieski) 

zmiana koloru w palecie karty graficznej 
VGA/IBM8514 

SetWriteMode 
(tyrb_rysowania) 

określenie sposobu nakładania linii 

 

Procedury wspomagające operacje graficzne: 
 

ClearDevice 

wyczyszczenie ekranu graficznego 

ClearViewPort 

wyczyszczenie okna graficznego 

GetViewSettings 

udostępnienie parametrów okna graficznego 

SetActivePage(strona) 

wybranie aktywnej strony ekranu graficznego 

SetVisualPage(strona) 

wyświetlenie na ekranie wskazanej strony 
ekranu graficznego 

SetViewPort(x1, y1, x2, y2, 
obcięcie) 

ustanowienie okna graficznego 

 

Funkcje i procedury tekstowe: 
 

GetTextSettings 

ujawnienie parametrów wykreślanego tekstu 

OutText(łańcuch) 

wykreślenie tekstu 

OutTextXY(x,y, łańcuch) 

wykreślenie tekstu w określonym miejscu 

SetTextJustify(poziom, pion) 

określenie sposobu justowania wykreślanego 
tekstu 

SetTextStyle(krój, kierunek, 
rozmiar) 

określenie parametrów wykreślanego tekstu 

SetUserCharSize 

określenie rozmiaru znaków fontów 
kreskowych 

TextHeight 

wyznaczenie wysokości wykreślanego tekstu 

TextWidth 

wyznaczenie szerokości wykreślanego tekstu 

 

 

 

background image

 
Operacje graficzne: 
 

Arc(x,y,kąt1, kat2, r) 

wykreślenie łuku okręgu 

Bar(x1, y1,  x2, y2) 

wykreślenie wypełnionego słupka 

Bar3D(x1, y1, x2, y2, głębokość, 
wierzchołek) 

wykreślenie wypełnionego słupka 
trójwymiarowego 

Circle(x, y, r) 

wykreślenie okręgu 

DrawPoly(liczba_punktów, 
współrzędne_punktów) 

rysowanie łamanej 

Ellipse(x,y, kąt1, kąt2, xr,yr) 

wykreślenie łuku elipsy 

FillEllipse 

wykreślenie wypełnionej elipsy 

FillPoly(liczba_punktów, 
współrzędne_punktow) 

wykreślenie wypełnionej łamanej 
zamkniętej 

FloodFill(x, y, brzeg) 

wypełnienie zdefiniowanego obszaru 
zawierającego x,y 

GetMaxX 

ujawnienie max. współrz. poziomej 
ekranu graficznego 

GetMaxY 

ujawnienie max. współrz. pionowej 
ekranu graficznego 

GetPixel(x, y) 

ujawnienie numeru koloru piksela 

GetX 

ujawnienie poziomej współrz. aktualnej 
pozycji kursora 

GetY 

ujawnienie pionowej współrz. aktualnej 
pozycji kursora 

Line(x1,y1,x2,y2) 

wykreślenie odcinka linii prostej 

Lineto(x,y) 

wykreślenie odcinka linii prostej 

LineRel(wektor1,wektor2) 

wykreślenie odcinka linii prostej 

MoveRel(wektor1, wektor2) 

względne przesunięcie kursora 
graficznego 

MoveTo(x,y) 

bezwzględne przesunięcie kursora 
graficznego 

PieSlice(x,y,kąt1, kat2, r) 

wykreślenie wypełnionego wycinka koła 

PutPixel(x,y,kolor) 

wyświetlenie piksela 

Rectangle(x1,y1,x2,  y2) 

wykreślenie prostokąta 

Sektor(x,y, kąt1, kąt2, półoś_x, 
półoś_y 

wykreślenie wypełnionego wycinka 
elipsy