Darmowa biblioteka graficzna WinBGI
- WinBGI dla Borland C++ 5.5
- W środowiskach Borland C++ nowszych od wersji 5.0 nie ma biblioteki graficznej
BGI. W programach konsolowych Windows budowanych w C++ można jednak
tworzyć grafikę BGI, korzystając z darmowej biblioteki WinBGI lub WinBGIm
(licencja GNU). Autorem pierwszej wersji WinBGI (1998) jest
Konstantin Knizhnik.
Biblioteka jest ciągle rozwijana, jej rozliczne wersje dla różnych kompilatorów
(Borland C++, MS Visual C++, Dev-C++, MinGW C++) można znaleźć w zasobach
internetowych. WinBGI zawiera implementacje większości funkcji tradycyjnej biblioteki
BGI. Niektóre wersje oferują dodatkowe udogodnienia, np. paletę kolorów RGB, dowolne
rozdzielczości trybów graficznych, obsługę myszy.
Jedna z wersji biblioteki WinBGI dla Borland C++ 5.5, dostępna na tej witrynie
w postaci pliku WinBGI.zip
spakowanego programem WinZip, obejmuje pliki: nagłówkowy graphics.h,
źródłowy winbgi.cpp, skompilowany winbgi.obj
i biblioteczny winbgi.lib. Plik graphics.h
najlepiej jest umieścić w katalogu Include kompilatora. Wówczas,
podobnie jak w przypadku tradycyjnej biblioteki BGI, tworzone programy graficzne
(aplikacje konsolowe) będą zawierały dyrektywę:
#include <graphics.h>
Aby do budowanego programu graficznego dołączyć wywoływane w nim funkcje
biblioteki WinBGI, wystarczy dodać do jego projektu jeden z plików
winbgi.cpp lub winbgi.obj.
Wygodnie jest wtedy dołączany plik przechowywać w odrębnym katalogu
i używać go w różnych programach graficznych. Może to być np. podkatalog
WinBGI utworzony w katalogu głównym kompilatora
(domyślnie Bcc55). Oczywiście, lepiej jest dołączać plik
winbgi.obj, gdyż unika się wówczas kompilacji biblioteki
WinBGI.
Najwygodniejszym sposobem dołączania funkcji WinBGI jest wskazanie w parametrach
linkera, że ma on dodatkowo przeglądać bibliotekę winbgi.lib.
Plik najlepiej jest wówczas umieścić w katalogu Lib
kompilatora. W środowisku Relo bibliotekę WinBGI można wtedy dołączyć, przywołując
w menu Options okno dialogowe Project
options i wpisując w wierszu edycyjnym Extra
Libraries nazwę winbgi.lib (rys.). Bibliotekę można
również wybrać w oknie Otwieranie przywołanym za pomocą
przycisku + usytuowanego tuż za wierszem Extra
Libraries.
- WinBGI w Borland C++ Builder 6
- Bibliotekę graficzną WinBGI można w podobny sposób używać w aplikacjach
konsolowych tworzonych w środowisku Borland C++ Builder 6 (rys.). Również wtedy
plik nagłówkowy graphics.h najlepiej jest umieścić
w katalogu Include, a plik biblioteczny
winbgi.lib w katalogu Lib
kompilatora. Aby dołączyć do projektu aplikacji wywoływane w niej funkcje WinBGI,
wystarczy w oknie dialogowym Add to project, przywołanym
polecniami menu Project i Add to
Project, wybrać plik winbgi.lib. Oczywiście można
za pomocą tych samych poleceń dołączać plik winbgi.obj lub
winbgi.cpp zamiast winbgi.lib.
- Inicjalizacja grafiki w WinBGI
- Konstruując grafikę za pomocą funkcji biblioteki WinBGI, należy kierować
się takimi samymi zasadami jak w przypadku tradycyjnej biblioteki BGI.
Funkcja initgraph() tworzy normalne okno w Windows
o nazwie Windows BGI i rozmiarze
obszaru roboczego 640×480 pikseli, odpowiadające ekranowi w trybie
VGAHI. Ścieżka dostępu do sterownika karty graficznej
jest nieistotna, gdyż jest on niewykorzystywany. Można ją zastąpić wskaźnikiem
pustym NULL. Co więcej, wszystkie parametry funkcji
initgraph() mają określone wartości domyślne; prototyp
tej funkcji ma postać:
void initgraph(int *device = NULL, int *mode = NULL, char const *pathtodriver = NULL);
Udogodnienie to pozwala na inicjalizację grafiki nie tylko w ten sam
sposób, jak w tradycyjnej bibliotece BGI, lecz także bez parametrów
w wywołaniu funkcji initgraph() i bez
definiowania zmiennych typu int określających
rodzaj karty graficznej i tryb jej pracy. Oto przykład programu
wypełniającego równomiernie obszar roboczy okna graficznego różnokolorowymi
prostokątami:
#include <graphics.h>
#include <stdlib.h>
void main()
{
randomize();
initgraph();
int x1 = 0, x2 = getmaxx(), y1 = 0, y2 = getmaxy();
while (x1 < x2 && y1 < y2)
{
setcolor(random(15)+1);
rectangle(x1, y1, x2, y2);
x1 += 4; x2 -= 4; y1 += 4; y2 -= 4;
}
getch();
closegraph();
}
Zamiast funkcji initgraph() można używać funkcji
initwindow(), która ma dwa parametry typu
int służące do określenia rozdzielczości trybu
graficznego, a właściwie rozmiarów obszaru roboczego okna graficznego.
Parametry te mają wartości domyślne 640 i 480, co odpowiada rozdzielczości
VGAHI.
- Definiowanie kolorów w WinBGI
- Zestaw tradycyjnych 16 kolorów oryginalnej karty VGA jest w WinBGI
podzbiorem pełnej gamy kolorów trybu RGB. Standardowe numery i nazwy
kolorów można używać, ale dowolny kolor można złożyć, określając intensywność
od 0 do 255 trzech podstawowych barw: red, green i blue.
Służy do tego makrodefinicja COLOR(red, green, blue).
Na przykład poniższy program pokazuje w oknie graficznym o rozmiarze
obszaru roboczego 256×256 pikseli wszystkie kombinacje barw czerwonej
i niebieskiej (rys.).
#include <graphics.h>
void main()
{
initwindow(256, 256);
for (int r = 0; r < 256; r++)
for (int b = 0; b < 256; b++)
putpixel(r, b, COLOR(r, 0, b));
getch();
closegraph();
}
Przytoczone wyżej dwa programy mogą rodzić pytanie: dlaczego nie
występuje w nich plik nagłówkowy conio.h,
skoro wywołują funkcję getch()? Odpowiedź jest prosta:
implementacje funkcji getch(),
kbhit() i delay()
są zawarte w bibliotece WinBGI. Jednak nie można na nich polegać
do końca, gdyż zachowują się dziwnie, gdy są wywoływane poza grafiką BGI.
|
|
 |
|
|