Tworzenie obiektów graficznych - procedury i funkcje
1/6
Procedury i funkcje trybu graficznego.
A. Szablon programu.
program rysowanie;
uses graph, crt;
var ster,tryb:integer;
begin
ster:=detect;
initGraph(ster,tryb,'C:\progra~1\tp\bgi');
{tutaj rysujemy}
repeat until keypressed; { ewentualnie delay}
closegraph;
readln;
end.
Rys. Układ współrzędnych ekranu w trybie wysokiej rozdzielczości.
B. Przegląd procedur i funkcji.
Poniższe procedury i funkcje pochodzą z modułu graph.
1. Funkcja
GetMaxX
Składnia:
GetMaxX:integer;
Opis: Zwraca maksymalną wartość współrzędnej poziomej (x) dla aktualnego trybu
graficznego.
2. Funkcja
GetMaxY
Składnia:
GetMaxY:integer;
Opis: Zwraca maksymalną wartość współrzędnej pionowej (y) dla aktualnego trybu
graficznego.
Przykład:
line(10,10,GetMaxX, GetMaxY);
x
639
0
0
479
y
Tworzenie obiektów graficznych - procedury i funkcje
2/6
3. Procedura:
Line
Składnia:
Line(x1,y1,x2,y2:integer);
Opis: Rysuje linię prostą od punktu (x1,y1) do punktu (x2,y2). Procedura nie zmienia
położenia kursora graficznego.
Przykład:
line(10,10,10,100);
4. Procedura
MoveTo
Składnia:
MoveTo(x1,y1):integer;
Opis: Przemieszcza kursor graficzny do punktu o podanych współrzędnych.
Przykład:
moveTo(30,40);
5. Procedura:
LineRel
Składnia:
LineRel(dx,dy:integer);
Opis: Rysuje linie zaczynającą się w punkcie aktualnego położenia wskaźnika ekranu
(kursora graficznego) i kończącą się w punkcie o współrzędnych przesuniętych względem
jego pozycji ( o dx w kierunku osi Ox i o dy w kierunku osi Oy). Procedura przesuwa
wskaźnik ekranu (kursor graficzny) na koniec wykreślonej linii.
Przykład:
lineRel(100,0);
6. Procedura
LineTo
Składnia:
LineTo(x1,y1:integer);
Opis: Rysuje linię zaczynającą się w punkcie wskazanym przez kursor graficzny i kończącą
się w punkcie (x1,y1). Procedura przesuwa wskaźnik ekranu na koniec wykreślonej linii.
Przykład:
lineTo(100,0);
7. Procedura
SetColor
Składnia:
SetColor(N:word);
Opis: Ustala na podstawie palety aktualny kolor kreślenia linii. Ilość dostępnych kolorów
zależy od trybu graficznego.
Stała koloru
Kod
Kolor
black
0
czarny
blue
1
niebieski
green
2
zielony
cyan
3
turkusowy
red
4
czerwony
magenta
5
karmazynowy
brown
6
brązowy
lightgray
7
jasnoszary
darkgray
8
szary
lightblue
9
jasnoniebieski
lightgreen
10
jasnozielony
lightcyan
11
jasny turkus
lightred
12
jasnoczerwony
lightmagenta 13
jasnokarmazynowy
yellow
14
żółty
white
15
biały
Tworzenie obiektów graficznych - procedury i funkcje
3/6
Przykład:
setColor(cyan); {zmiana koloru linii na cyan}
line(10,10,100,10); {linia w kolorze cyan}
setColor(4); {zmiana koloru linii na czerwony - nr 4}
line(10,10,10,100); {linia w kolorze czerwonym}
8. Procedura
SetBkColor
Składnia:
SetBkColor(N:word);
Opis: ustala kolor tła ekranu graficznego. Ilość dostępnych kolorów zależy od trybu
graficznego.
Przykład:
setBkColor(lightgray); {zmiana koloru tla na jasnoszary}
setBkColor(14); {zmiana koloru tla na zolty}
9. Procedura
SetLineStyle
Składnia:
SetLineStyle ( styl, wzorzec, grubosc:word );
Opis: Zmienia styl (rodzaj linii) oraz jej grubość używanej przy procedurach
Line, Circle,
itd.
Parametr
styl
:
SolidLn = 0 - ciągła
DottedLn = 1 - kropkowana
CenterLn = 2 - symetryczna
DashedLn = 3 - przerywana
UserBitLn = 4 - o wzorze zdefiniowanym przez użytkownika
Parametr
wzorzec
- jest to zdefiniowane przez użytkownika kolejne 16 pikseli nowej
nietypowej linii (
styl=4
). Jeżeli styl linii jest różny od 4 to pod wzór możemy wstawić
jakąkolwiek liczbę gdyż nie będzie ona brana pod uwagę.
Parametr
grubosc
:
NormWidth = 1 - linia normalna
ThickWidth = 3 - linia pogrubiona
Przykład:
setLineStyle(0,0,3); {0 - linia ciagla, 0 - wzorzec domyslny, 3 - gruba}
line(20,20, 300,300);
setLineStyle(1,0,1); {1 - kropkowana, 0 - wzorzec domyslny, 1 - normalna}
line(100,50, 350,350);
setLineStyle(2,0,3); {2 - symetryczna, 0 - wzorzec domyslny, 3 - gruba}
line(200,100,200,300);
10. Procedura
SetFillStyle
Składnia:
SetFillStyle( nrwzorca,kolor:word );
Opis: 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 (parametr
nrwzorca
) 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
Tworzenie obiektów graficznych - procedury i funkcje
4/6
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
Przykład:
setFillStyle(1,yellow); { 1-wypelnienie ciagle, kolor wypelnienia - zolty}
setFillStyle(7,4);{7-wypelnienie siatką pionową, kolor wypeln. - 4 (red)}
11. Procedura
Circle
Składnia:
Circle ( x,y:integer; r:word );
Opis: Procedura rysuje okrąg o środku umieszczonym w punkcie
(x,y)
, promieniu
r
i
kolorze określonym przez procedurę
SetColor
.
uses graph,crt;
var ster,tryb:integer;
begin
ster:=detect;
initGraph(ster, tryb, 'C:\progra~1\tp\bgi');
circle(320,240,40);{koło o współrzędnych środka 320,240 i promieniu 40}
repeat until keypressed;
closeGraph;
End.
12.Procedura
Rectangle
Składnia:
Rectangle ( x1,y1,x2,y2:integer );
Opis: Procedura rysuje prostokąt.
(x1,y1) to współrzędne lewego górnego wierzchołka, a (x2,y2) to współrzędne prawego
dolnego wierzchołka ( są to przeciwległe wierzchołki ). Muszą być spełnione warunki:
0<=
x1
<
x2
<=
GetMaxX
, 0<=
y1
<
y2
<=
GetMaxY
.
Przykład:
rectangle(10,10,100,100);
13. Procedura
Arc
Składnia:
arc(x,y:integer; pocz,kon, r:word);
Opis: Rysuje łuk (wycinek okręgu) dla podanych współrzędnych środka, kącie i promieniu.
Parametry
x
i
y
oznaczają współrzędne środka. Kąty
pocz
i
kon
podaje się w stopniach. Dla
pocz=0
i
kon=360
procedura wyświetla pełny okrąg. Procedura kreśli łuk w kierunku
przeciwnym do ruchu wskazówek zegara (kąt zero odpowiada godzinie 3.00).
Przykład:
arc(320, 240,10,50,60);
{wycinek okregu o środku w punkcie (320,240), pocz = 10, kon = 50, promien
okregu = 60 }
Tworzenie obiektów graficznych - procedury i funkcje
5/6
14. Procedura
Ellipse
Składnia:
Ellipse(x,y:integer; pocz,kon,px,py:word);
Opis: Rysuje elipsę lub jej wycinek. Parametry
px
,
py
są długościami półosi elipsy (
x
,
y
,
pocz
,
kon
– jak dla arc).
Przykład:
ellipse(x, y, 0, 270, 80, 60);
15. Procedura
FloodFill
Składnia:
FloodFill ( x,y:integer; kolor_granicy:word );
Opis: Wypełnia ograniczony obszar ekranu akutalnym wzorcem wypełnienia.
Najpierw wypełniany jest punkt o współrzędnych (x,y), następnie punkty leżące wokół niego,
potem ich sąsiedzi, aż do napotkania linii o kolorze
kolor_granicy
lub granicy ekranu.
uses graph, crt;
var
ster,tryb:integer;
begin
ster:=detect;
initGraph(ster, tryb, 'C:\progra~1\tp\bgi' );
setColor(green);
Tworzenie obiektów graficznych - procedury i funkcje
6/6
Rectangle(30,30,120,120);
Rectangle(10,10,100,100);
floodFill(50,50,Green);
repeat until keypressed;
closeGraph;
end.
Program wypełnia obszar który jest wspólny dla obu prostokątów.
16. Procedura
PutPixel
Składnia:
PutPixel ( X,Y:integer; Kolor:word );
Procedura wyświetla na ekranie jeden punkt o kolorze
Kolor
, jest to przydatne przy
precyzyjnym rysowaniu. Procedura nie zmienia położenia wskaźnika ekranu.
17. Procedura
OutTextXY
Składnia:
OutTextXY ( X,Y:integer; S:string );
Procedura wyświetla na ekranie tekst określony przez zmienną
S
rozpoczynając od
współrzędnych (X,Y) i w aktualnym kolorze (
SetColor
) .
uses graph,crt;
var
ster,tryb:integer;
begin
ster:=detect;
initGraph(ster, tryb, ' C:\progra~1\tp\bgi' );
outTextXY(200,100,'Oto tekst');
repeat until keypressed;
closeGraph;
End.
18. Procedura
ClearDevice
Składnia:
ClearDevice;
Procedura czyści ekran graficzny.