background image

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); 

 

639 

479 

background image

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 

czarny 

blue 

niebieski 

green 

zielony 

cyan 

turkusowy 

red 

czerwony 

magenta 

karmazynowy 

brown 

brązowy 

lightgray 

jasnoszary 

darkgray 

szary 

lightblue 

jasnoniebieski 

lightgreen 

10 

jasnozielony 

lightcyan 

11 

jasny turkus 

lightred 

12 

jasnoczerwony 

lightmagenta  13 

jasnokarmazynowy 

yellow 

14 

żółty 

white 

15 

biały 

background image

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 

background image

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 } 
 

background image

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); 

background image

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.