pascal9_grafika.pdf

(47 KB) Pobierz
pascal9_grafika.doc
Free Pascal -Grafika
Wprowadzenie
Język programowania Pascal umożliwia tworzenie aplikacji pracujących w trybie tekstowym
i graficznym. Tryb tekstowy jest podstawowym trybem, dla aplikacji.
Tryb graficzny jest ściśle związany z kartą graficzną, w jaką jest wyposażony komputer.
Podczas inicjowania trybu graficznego należy określić właściwy dla danego sprzętu sterownik
i tryb pracy ekranu. Do tego służy procedura DetectGraph, której wywołanie jest następujące:
DETECTGRAPH (sterownik, tryb)
Jeśli zmienne sterownik i tryb są zmiennymi typu Integer, to wykonuje się instrukcję:
sterownik := Detect;
Procedura InitGraph
Procedura ta służy do zainicjowania trybu graficznego. Ma ona następującą budowę:
Składnia: InitGraph (sterownik,tryb,katalog);
Możliwe sterowniki (czyli rodzaje karty graficznej) to :
1 = CGA
2 = MCGA
3 = EGA
4 = EGA64
5 = EGAMono
6 = IBM8514
7 = HercMono
8 = ATT400
9 = VGA
10 = PC3270
A możliwe tryby do wyświetlenia przez daną kartę graficzną (każdy posiada różne
rozdzielczości i ilość kolorów ) to:
CGAC0 = 0 - 320 x 200, 4 kolory z palety nr 0
CGAC1 = 1 - 320 x 200, 4 kolory z palety nr 1
CGAC2 = 2 - 320 x 200, 4 kolory z palety nr 2
CGAC3 = 3 - 320 x 200, 4 kolory z palety nr 3
CGAHi = 4 - 640 x 200, 2 kolory ( czarno-białe )
MCGAC0 = 0 - 320 x 200, 4 kolory z palety nr 0
MCGAC1 = 1 - 320 x 200, 4 kolory z palety nr 1
MCGAC2 = 2 - 320 x 200, 4 kolory z palety nr 2
MCGAC3 = 3 - 320 x 200, 4 kolory z palety nr 3
MCGAMed = 4 - 640 x 200, 2 kolory ( czarno-białe )
MCGAHi = 5 - 640 x 480, 2 kolory ( czarno-białe )
- 1 -
PDF created with pdfFactory trial version www.pdffactory.com
 
Free Pascal -Grafika
EGALo = 0 - 640 x 200, 16 kolorów
EGAHi = 1 - 640 x 350, 16 kolorów
EGA64Lo = 0 - 640 x 200, 16 kolorów
EGA64Hi = 1 - 640 x 350, 4 kolory
EGAMonoHi = 0 - 640 x 480, 2 kolory ( czarno-białe )
HercMonoHi = 0 - 720 x 348, 2 kolory ( czarno-białe )
ATT400C0 = 0 - 320 x 200, 4 kolory z palety nr 0
ATT400C1 = 1 - 320 x 200, 4 kolory z palety nr 1
ATT400C2 = 2 - 320 x 200, 4 kolory z palety nr 2
ATT400C3 = 3 - 320 x 200, 4 kolory z palety nr 3
ATT400Med = 4 - 640 x 200, 2 kolory ( czarno-białe )
ATT400Hi = 5 - 640 x 400, 2 kolory ( czarno-białe )
VGALo = 0 - 640 x 200, 16 kolorów
VGAMed = 1 - 640 x 350, 16 kolorów
VGAHi = 2 - 640 x 480, 16 kolorów
PC3270Hi = 0 - 720 x 350, 2 kolory ( czarno-białe )
IBM8514Lo = 0 - 640 x 480, 256 kolorów
IBM8514Hi = 1 - 1024 x 768, 256 kolorów
Aby uprościć i umożliwić tworzenie bardziej uniwersalnych programów zaleca się stosowanie
DetectGraph. Np.
Program graf1;
uses crt, graph;
var sterownik, tryb :integer;
begin
sterownik:=detect;
InitGrah(sterownik, tryb, ‘C:\TP\BGI’);
. . .
CloseGraph
end.
Wykorzystanie takiego początku spowoduje zainicjowanie trybu graficznego właściwego dla
karty graficznej, w jaką jest wyposażony zestaw komputerowy. Odpowiedni sterownik
powinien znajdować się na dysku C: w podkatalogu BGI katalogu TP. Zakończenie pracy
programu w trybie graficznym następuje poprzez wywołanie bezparametrowej procedury
CloseGraph, która powoduje usunięcie sterownika z pamięci operacyjnej ekranu i powrót
ekranu do trybu sprzed zainicjowania trybu graficznego.
- 2 -
PDF created with pdfFactory trial version www.pdffactory.com
 
Free Pascal -Grafika
Współrzędne
W trakcie pisania programów w trybie graficznym, baczną uwagę należy zwracać na
współrzędne. Pamiętać należy o jednej podstawowej zasadzie: lewy dolny róg to współrzędne
0,0 a nie 1,1 !!!!!
Procedura SetColor
Składnia procedury przedstawia się następująco:
SetColor (kolor);
Zmienia kolor w trybie graficznym ( TextColor w graficznym nie działa ! ) jakim zostaną
wyświetlane np. kółka, linie czy prostokąty.
Procedura SetBkColor
Składnia procedury:
SetBkColor (kolor);
Procedura ta zmienia kolor tła w trybie graficznym ( TextBackGround w graficznym nie
działa! ).
Procedura SetFillStyle
Składnia procedury:
SetFillStyle( nrwzorca,kolor);
Procedura ta zmienia rodzaj i kolor wypełnienia konturów wykorzystywanych przez niektóre
procedury (np. przez Bar, Bar3D itp.) Domyślne ustawienia początkowe to wzorzec wypełniania
ciągłego i numer koloru będący maksymalnym kolorem aktualnego trybu graficznego. Rodzaje
wzorca to:
EmptyFill = 0 - wypełnienie kolorem tła
SolidFill = 1 - wypełnienie ciągłe
LineFill = 2 - wypełnienie pogrubionymi liniami poziomymi
LtSlashFill = 3 - wypełnienie liniami pochyłymi w prawo
SlashFill = 4 - wypełnienie pogrubionymi liniami pochyłymi w prawo
BkSlashFill = 5 - wypełnienie pogrubionymi liniami pochyłymi w lewo
LtBkSlashFill = 6 - wypełnienie liniami pochyłymi w lewo
HatchFill = 7 - wypełnienie siatką pionową
xHatchFill = 8 - wypełnienie siatką ukośną
InteerleaveFill = 9 - wypełnienie liniami splecionymi
VideDotFill = 10 - wypełnienie kropkami
CloseDotFill = 11 - wypełnienie zagęszczonymi kropkami
UserFill = 12 - wypełnienie wzorem zdefiniowanym przez użytkownika
procedurą SetFillPattern
- 3 -
PDF created with pdfFactory trial version www.pdffactory.com
 
Free Pascal -Grafika
Procedura SetLineStyle
Procedura ta zmienia rodzaj oraz grubość linii używanej przy procedurach Line, Circle i
Bar3D. Składnia procedury jest następująca:
SetLineStyle ( RodzLin, Wzor, Grubosc );
Rodzaje linii to:
SolidLn = 0 - ciągła
DottedLn = 1 - kropkowana
CenterLn = 2 - symetryczna
DashedLn = 3 - przerywana
UserBitLn = 4 - o wzorze zdefiniowanym przez użytkownika
Wzor - jest to zdefiniowane przez użytkownika kolejne 16 pikseli nowej nietypowej linii
(rodzlin=4 ). Jeżeli rodzaj linii jest różny od 4 to pod wzór można wstawić jakąkolwiek liczbę
gdyż nie będzie ona brana pod uwagę.
Rodzaje grubości to:
NormWidth = 1 - linia normalna
ThickWidth = 3 - linia pogrubiona
przykład: SetLineStyle(0,0,3);
Procedura Line
Składnia:
Line ( X1,Y1,X2,Y2);
Procedura rysuje linię zaczynającą się w punkcie X1,Y1 a kończącą się w X2,Y2 kolorem
określonym przez procedurę SetColor
Procedura Circle
Składnia:
Circle ( X,Y,R);
Procedura rysuje koło o środku umieszczonym o współrzędnych X,Y, promieniu R i kolorze
określonym przez procedurę SetColor.
Procedura Rectangle
Składnia procedury: Rectangle ( X1,Y1,X2,Y2);
Procedura rysuje prostokąt. X1,Y1 to współrzędne lewego górnego rogu, a X2,Y2 to
współrzędne lewego dolnego rogu ( są to przeciwległe wierzchołki )
- 4 -
PDF created with pdfFactory trial version www.pdffactory.com
 
Free Pascal -Grafika
Procedura FloodFill
Składnia: FloodFill ( X,Y,kolorgranicy);
Procedura wypełnia aktualnym kolorem i wzorem ( SetFillStyle ) obszar ograniczony brzegiem
o kolorze "kolorgranicy" tzn. Jeżeli przy wypełnianiu danego obszaru procedura napotka na
jakąś np. linię wykonaną kolorem "kolorgranicy" to zachowuje się jakby to był dla niej mur nie
do przejścia i zostawia i jego i to co się za nim znajduje w spokoju :) Punkt X,Y jest miejscem
od którego procedura zaczyna wypełniać obszar.
Procedura Bar
Składnia: Bar ( X1,Y1,X2,Y2);
Procedura rysuje wypełniony prostokąt. X1,Y1 to współrzędne lewego górnego rogu, a X2,Y2 to
współrzędne lewego dolnego rogu ( są to przeciwległe wierzchołki ), kolor ramki jest określony
przez procedurę SetColor, a kolor wypełnienia przez procedurę SetFillStyle
Procedura Bar3D
Składnia: Bar3D ( X1,Y1,X2,Y2,B,TOP);
Procedura rysuje trójwymiarowy wypełniony prostokąt. X1,Y1 to współrzędne lewego górnego
rogu przedniej ścianki, X2,Y2 to współrzędne lewego dolnego rogu przedniej ścianki, zmienna
B jest to głębokość naszego prostopadłościanu, zmienna TOP określa czy górna powierzchnia
jest widoczna TRUE czy niewidoczna FALSE. Granice słupka rysowane są liniami typu
określonego przez procedurę SetLineStyle aktualnym kolorem ( SetColor ) i aktualnym
wzorem i kolorem wypełnienia ( SetFillStyle )
Procedura PutPixel
Składnia: PutPixel ( X,Y,Kolor);
Procedura wyświetla na ekranie jeden punkt o kolorze "Kolor", jest to przydatne przy
precyzyjnym rysowaniu
Procedura OutTextXY
Składnia: OutTextXY ( X,Y,S);
Procedura wyświetla na ekranie tekst określony przez zmienną "S" rozpoczynając od
współrzędnych X,Y ii w aktualnym kolorze (SetColor)
- 5 -
PDF created with pdfFactory trial version www.pdffactory.com
 
Zgłoś jeśli naruszono regulamin