Mmoduł ten nie jest najlepszy, jednak do prostych rzeczy oraz na początek nauki o grafice w zupełności wystarczy.

Do zainicjowania tryby graficznego służy procedura initgraph:

...
sterownik:=0;
tryb:=0;
initgraph (sterownik,tryb,'C:\TP\BGI');
...

Dwa pierwsze parametry muszą być zmiennymi (nikt nie wie dlaczego). Przypisanie im zerowych wartości powoduje, że komputer sam dobiera odpowiednie wartości (autodetekcja). Gdybyśmy sterownikowi nadali wartość 9, a zmiennej tryb wartość 2, to ustawiony by został tryb VGA 640x480 przy 16 kolorach (załóżmy, że właśnie z takiego będziemy korzystać). Graph wymaga specjalnych plików z rozszerzeniem .bgi, których szuka w lokalizacji podanej trzecim parametrem. Chyba najczęściej używanym plikiem jest egavga.bin, który jest wymagany do wspomnianego wcześniej trybu. Dlaczego najczęściej? Jest on najwygodniejszy w użyciu i niewiele jest w tej chwili kart graficznych, które by go nie obsługiwały Jeżeli więc piszesz program używając modułu graph i chcesz się komuś pochwalić, pamiętaj żeby obok samego programu na dyskietce umieścić jeszcze odpowiedni plik .bgi oraz o procedurze initgraph i jej trzecim parametrze.
No dobrze, to może byśmy w końcu coś narysowali? Ponieważ dopiero się uczymy, to zaczniemy od czegoś małego, a mianowicie punktu. Możemy to zrobić tak:

...
putpixel (0,0,15);
...

Spowoduje to zapalenie białego pixela w lewym górnym rogu. Pierwszy parametr to współrzędna pozioma, a drugi pionowa. Zwróć uwagę, że w trybie graficznym początek układu współrzędnych to [0,0], a nie [1,1] jak jest w przypadku trybu tekstowego. Trzeci parametr to kolor pixela (jest ich 16 czyli można wstawiać numery 0-15).
Do narysowania linii służy procedura line (x1,y1,x2,y2). Podajemy tylko współrzędne początku i końca, a co z kolorem? Gdzieś w pamięci komputer przechowuje numer koloru, którym rysuje wszystko oprócz punktów. Kolor ten możemy ustalić za pomocą procedury setcolor (k). Spójrz:

program Obraz_kontrolny;
uses graph;
var sterownik,tryb : integer;
i,j,k : integer;
begin
k:=0;
sterownik:=9;
tryb:=2;
initgraph (sterownik,tryb,''); {pusta ścieżka czyli}
for i:=0 to 16 do {plik egavga.bgi musi się znajdować}
begin {w katalogu z programem}
setcolor (i);
for j:=k+0 to k+39 do
line (j,0,j,639);
k:=k+40
end;
readln;
closegraph
end.

Czy Twój monitor działa poprawnie? :)
Ostatnia procedura przywraca ponownie tryb tekstowy. W tym programie można się było bez niej obejść, ale czasem się ona przydaje, np, kiedy chcemy wydrukować na ekranie jakiś wynik lub zapytać o dane.
Moduł graph jest dosyć spory i nie ma sensu opisywać dokładniej każdej procedury jaką nam oferuje. W tabeli zebrałem te najciekawsze:
procedura/funkcja efekt
rectangle (x1,y1,x2,y2) Rysuje prostokąt, którego lewy górny róg to [x1,y1], a prawy dolny to [x2,y2].
circle (x,y,r) Okrąg o środku w punkcie [x,y] i promieniu r.
arc (x,y,alfa,beta,r) Łuk okręgu o środku w punkcie [x,y] i promieniu r. Wielkości alfa i beta oznaczają kąt początkowy i kąt końcowy promienia wodzącego (w stopniach 0-360).
ellipse (x,y,alfa,beta,xr,yr) Elipsa. X, y, alfa oraz beta tak jak przy łuku. Dodatkowo xr to długość osi poziomej elipsy, natomiast yr to długość osi pionowej elipsy.
outtextxy (s,x,y) Wypisuje na ekranie tekst s począwszy od punktu [x,y].
getmaxx, getmaxxy Funkcje te zwracają maksymalne wartości współrzędnych: poziomej i pionowej.
To nie koniec możliwości modułu graph. Aby opisać je wszystkie trzeba by było jeszcze dużo pisać, a najprawdopodobniej i tak w przyszłości nie będziesz z niego korzystać. Niemniej jednak dobrze jest go znać, chociaż w takiej części (w sumie nie takiej małej).