modul_graph - procedury.pdf

(43 KB) Pobierz
MODUŁ GRAPH
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).
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
0
Czarny
Blue
1
Niebieski
Green
2
Zielony
Cyan
3
Morski
Red
4
Czerwony
Magenta
5
Fioletowy
Brown
6
Brązowy
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
LightGray
7
Jasnoszary
DarkGray
8
Ciemnoszary
LightBlue
9
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
0
linia ciągła
Ú
0.
DottedLn
1
linia kropkowana
CenterLn
2
linia przerywana
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.
DashedLn
3
linia przerywana
UsesBitLn
4
wzorzec definiowany
przez uŜytkownika
100890898.001.png 100890898.002.png
 
Grubość linii
Identyfikator Wartość Grubość
NormWidth 1 normalna(domyślna)
ThickWidth 3 pogrubiona
S
tałe sposobu wykreślania tekstów
Identyfikator Wartość Znaczenie
HorizDir 0 poziomo - od lewej do prawej
VertDir 1 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
uŜytkownika
Stałe kroju czcionki
Identyfikator
Wartość
Wzorzec
DefaultFont
0
TriplexFont
1
SmallFont
2
SansSerifFont
3
GothicFont
4
Funkcje i procedury modułu Graph
Wartość
Znaczenie
Funkcje i procedury organizacyjne:
CloseGraph
zakończenie pracy w trybie graficznym
LeftText
0
Wyrównywanie do lewej
DetectGraph(sterownik,tryb)
rozpoznanie karty graficznej
CenterText
1
Centrowanie w poziomie
GraphDefaults
wznowienie domyślnego środowiska
graficznego
RightText
2
Wyrównywanie do prawej
BottomText
0
Wyrównywanie do dołu
GraphResult
ujawnienie kodu błędu operacji graficznej
CenterText
1
Centrowanie w pionie
GraphErrorMsg(kod_błędu)
udostępnienie komunikatu o błędzie operacji
graficznej
TopText
2
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
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:
Wartość
Wzorzec
EmptyFill
0
brak wypełnienia
SolidFill
1
wypełnienie pełne
LineFill
2
w poziome linie
LtSlashFill
3
ukośne linie
SlashFill
4
ukośne linie
BkSlashFill
5
ukośne linie
LtBkSlashFill
6
ukośne linie
HatchFill
7
kratka
XHatchFill
8
kratka ukośna
InterleaveFill
9
falowane pionowe linie
GetImage(x1, y1, x2, y2, obraz) zapamiętanie obrazu graficznego
ImageSize(x1, y1, x2, y2)
WideDotFill
10
kropki
wyznaczenie rozmiaru pamięci potrzebnego
dla przechowania obrazu
CloseDotFi;;
11
gęste kropki
UserFill
12
wzorzec definiowany przez
PutImage(X, Y, obraz,
wyświetlenie zapamiętanego obrazu
100890898.003.png
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)
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
określenie skrajnych wartości trybu
graficznego wyspecjalizowanego sterownika
Procedury wspomagające operacje graficzne:
ClearDevice
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)
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
zdefiniowanie kolorów palett
TextWidth
wyznaczenie szerokości wykreślanego tekstu
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
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
Zgłoś jeśli naruszono regulamin