Jak cię złapią, to znaczy, że oszukiwałeś. Jak nie, to znaczy, że posłużyłeś się odpowiednią taktyką.
kreowany jest obiekt o nazwie poprzez wywołanie na jego rzecz konstruktora klasy . W wierszu 37. powtarzamy czynności z wiersza 36., ale dla
obiektu klasy , z tym jednak że tu (dla odmiany) wykreowany obiekt wskazy- wany jest nie nazwą, ale wskaźnikiem . Zauważmy, że ostatni argument w wywołaniu konstruktora wynosi: 1 w wierszu 36. i 0 w wierszu 37. Zatem, w przypadku obiektu będzie działać mechanizm, który spowoduje obcinanie (clipping) wychodzących poza podokno lokalnych części rysowanych figur geometrycznych lub napisów. W przypadku okna tak nie będzie. W wierszu 38. wywołujemy funkcję , a w wierszu 39. funkcję na rzecz obiektu . Ponieważ jest nazwą obiektu, więc w wierszach 38. i 39. używamy ope- ratora kropki. W wierszach 40. i 41. wywołujemy funkcje oraz na rzecz obiektu wskazywanego wskaźnikiem . Stąd konieczność użycia operatora strzałki w tych wywołaniach funkcji. Przed zakończeniem programu należy zamknąć tryb graficzny poprzez wywołanie funkcji * w wierszu 42. Po skompilowaniu, konsolidacji i wykonaniu programu w trybie Windows lub MS-DOS otrzymujemy ekran, jaki przedstawiony został na rysunku 9.1. Rysunek 9.1. Ekran otrzymany w wyniku wykonania programu p9_1.exe C:\Andrzej\PDF\ABC programowania w C++\r09.doc 135 136 Czć I ¨ Wprowadzenie do jzyka C++ Podokno pierwsze pracuje w trybie obcinania figur wystających poza obszar podokna lokalnego, a okno drugie w trybie bez obcinania. Zauważmy, że elipsa obiektu została obcięta na granicy podokna lokalnego ustala- nego funkcją biblioteczną w wierszu 55. programu. Ponieważ mechanizmu tego nie wywołano przy kreacji obiektu (w wierszu 37.), więc linia narysowana na rzecz tego obiektu wychodzi poza granice okna lokalnego (viewport). Wykonanie powyższego programu na innym komputerze jest możliwe tylko wtedy, gdy sterowniki grafiki EGAVGA znajdują się również w katalogu C:\Bc5\Bgi, tzn. takim jak w wierszu 9. programu. W przeciwnym razie należy ponownie skompilować program, uaktualniając ścieżkę dostępu w wierszu 9. programu. Innym rozwiązaniem, nie wy- magającym rekompilacji, byłoby podanie w wierszu 9. programu pustej ścieżki do-stępu do sterowników grafiki (czyli 44). Wtedy program (w czasie wykonania) poszu- kuje sterowników w katalogu bieżącym. Mając tak skompilowany program, przed jego wykonaniem należałoby skopiować plik Egavga (z zasobów Borland) do bieżą- cego katalogu (w którym znajduje się p9_1.exe) i wtedy dopiero go wykonać. Drugi sposób udostępniania programowi sterowników grafiki (tzn. sposób z tzw. wlinkowaniem czyli trwałym dołączeniem sterowników EGAVGA) pokażemy w pro- gramie p9_1wg.cpp (odmiana programu p9_1.cpp) zlokalizowanym w katalogu p9_1wg (o takiej samej nazwie jak program). Najpierw należy uzyskać plik Egavga.obj. W tym celu do bieżącego katalogu, np. C:\ Bcpp5\p9_1wg, należy skopiować program Bgiobj.exe (z zasobów Borland), np. z ka- talogu C:\Bc5\Bgi. Kopiowanie to przeprowadzamy poza środowiskiem programowania Borland, np. wykorzystując program Eksplorator Windows. Następnie (nadal korzystając z programu Eksplorator Windows) otwieramy bieżący katalog, po czym wskazujemy myszą podane dalej pola i wpisujemy: Start|Uruchom| Bgiobj C:\Bg5\Bgi\Egavga. Po wykonaniu i zamknięciu programu Bgiobj.exe, w kata- logu C:\Bcpp5\p9_1wg powinien się pojawić plik Egavga.obj. Zamykamy program Eksplorator Windows. Uruchamiamy środowisko programowania Borland C++ i tworzymy nowy projekt o nazwie p9_1wg, dla platformy DOS w katalogu p9_1wg, z tym jednak że w oknie New Target zaznaczamy kwadratowe pole BGI (rysunek 2.2). Wskazując myszą na ikony File|Open odszukujemy program p9_1.cpp (w katalogu p9_1) i zapisujemy go w katalogu p9_1wg pod nazwą p9_1wg.cpp. W oknie Project naprowadzamy kursor na kwadrat z minusem tuż przed nazwą p9_1wg.exe i naciskamy prawy przycisk myszy. Pojawia się lista wyboru, na której lewym przyciskiem myszy wskazujemy polecenie Add node. Pojawi się okno Add to Project List. W polu Pliki typu rozwijamy listę i wybieramy opcję All files (*.*). Myszą wskazujemy na Egavga.obj, jak pokazano na rysunku 9.1a. 136 C:\Andrzej\PDF\ABC programowania w C++\r09.doc Rozdział 9. ¨ Grafika punktowa 137 Rysunek 9.1a. Okno środowiska programowania Borland w czasie dodawania do już utworzonego projektu (w bieżącym katalogu) pliku Egavga.obj w celu trwałego dołączenia sterowników grafiki Po wskazaniu myszą przycisku Otwórz, okno Add to Project List znika, a w oknie Project pojawia się nowy węzeł (node) egavga.obj, jak pokazano na rysunku 9.1b. Rysunek 9.1b. Fragment okna środowiska programowania Borland po dodaniu do projektu pliku Egavga.obj Uaktywniamy (poprzez kliknięcie) okno z plikiem programu p9_1wg.cpp i dokonujemy w nim modyfikacji polegającej na uruchomieniu funkcji zamiast . Po skompilowaniu i konsolidacji otrzymujemy program, którego integralną częścią są sterowniki grafiki EGAVGA. Wykonanie tego programu prowadzi do ta-kiego samego wydruku, jak wydruk przedstawiony na rysunku 9.1. Pozycjonowanie obiektu za pomocą myszy Do przesuwania obiektów takich jak figury geometryczne można użyć myszy, podobnie jak zostanie to zrobione w programie p9_2.cpp. W programie tym dostęp do sterow- ników grafiki realizujemy sposobem przedstawionym w drugiej części poprzedniego podrozdziału, tzn. poprzez wywołanie funkcji . (Funkcja jest tu nieczynna). W tym celu uruchamiamy projekt w katalogu p9_2 z zaznaczeniem pola BGI (widocznego na rysunku 2.2) i z dodaniem węzła (node) w postaci pliku egavga. obj (jak na rysunku 9.1b). Plik ten można np. przegrać z katalogu p9_1wg lub wskazać go w tym katalogu w czasie dołączania nowego węzła. Oczywiście można go też wykreować od nowa za pomocą programu Bgiobj.exe, tak jak zrobiono to w drugiej części poprzedniego podrozdziału. C:\Andrzej\PDF\ABC programowania w C++\r09.doc 137 138 Czć I ¨ Wprowadzenie do jzyka C++ Do obsługi myszy zdefiniujemy klasę $5 zawierającą funkcje własne: $ (do uru- chomienia myszy), $ (do ujawniania kursora myszy), ,$ (do ukrycia kursora myszy) i 65$ (do zwrotu aktualnych współrzędnych kursora myszy). W funkcji utworzymy tylko jeden obiekt o nazwie klasy (typu) . Obiekt ten jest widocz- nym na rysunku 9.2a prostokątem o wymiarach zdefiniowanych za pomocą wartości argumentów w wywołaniu konstruktora klasy w wierszu 49. Na rzecz tego obiektu wywołujemy funkcję własną klasy . W funkcji tej definiujemy podokno z lokalnym układem współrzędnych, pokrywające się z utworzonym właśnie
|
Wątki
|