Wykorzystanie wskaźników w grafice.




W tym dziale zajmiemy się procedurami graficznymi kopiującymi część ekranu do bufora pamięci. Buforem pamięci będzie zmienna bitmapa typu pointer. Pointer jest predefiniowanym typem wskaźnikowym, którego zmienne nie wskazują danych żadnego określonego typu. Są one jednakże zgodne z dowolnym innym typem wskaźnikowym. Do kopiowania fragmentów ekranu z wykorzystaniem bufora pamięci służą procedury GetImage i PutImage. GetImage umieszcza wybrany prostokątny fragment ekranu określony przez współrzędne lewego górnego narożnika i prawego dolnego narożnika w zarezerwowanym wcześniej obszarze pamięci.

 GetImage(x1,y1,x2,y2,bitmapa^);
X1, y1, x2, y2 są współrzędnymi wybranego do zapamiętania fragmentu ekranu, a bitmapa jest zmienną wskaźnikową oznaczającą adrespoczątku zarezerwowanego obszaru pamięci.
Przed wywołaniem procedury GetImage należy zarezerwować odpowiednio duży obszar pamięci. Do określenia rozmiarów tego obszaru służy funkcja ImageSize, która zwraca wartość typu Word.
Funkcja ta zwraca ilość bajtów potrzebnych do zapamiętania fragmentu ekranu określonego przez współrzędne jego lewego górnego narożnika i prawego dolnego narożnika.

 ImageSize(x1,y1,x2,y2);
Znajdujący się w pamięci obraz można umieścić w wybranym miejscu ekranu, określonym przez współrzędne jego lewego górnego narożnika za pomocą funkcji PutImage.

 PutImage(x1,y1,x2,y2,bitmapa^,opcja);
Argumentami funkcji oprócz parametrów lewego górnego rogu, są: adres obszaru pamięci zawierającego obraz oraz sposób kopiowania. Możliwe są tu następujące opcje określone stałymi:

  CopyPut
  XorPut
  OrPut
  AndPut
  NotPut
Działanie tych opcji ilustruje przykładowy program.







A oto program wykorzystujący powyższe metody do bardziej rozrywkowego celu.