home *** CD-ROM | disk | FTP | other *** search
- /* CIRCLE.CPP - Beispiel aus Kapitel 5 der
- Einführung */
-
- // Eine abgeleitete Kreisklasse
-
- #include <graphics.h> // Grafik-Deklarationen
- #include "point.h" // Deklarationen der Klassen
- // Point und Location
- #include <conio.h> // für die Funktion getch()
-
- // Mit point2.obj und graphics.lib linken
-
- class Circle : public Point
- { // privat abgeleitet aus der Klasse Point,
- // letztendlich aus der Klasse Location
-
- int Radius; // Privat, voreingestellt
-
- public:
- Circle(int InitX, int InitY, int InitRadius);
- void Show(void);
- void Hide(void);
- void Expand(int ExpandBy);
- void MoveTo(int NewX, int NewY);
- void Contract(int ContractBy);
- };
-
- Circle::Circle(int InitX,
- int InitY,
- int InitRadius)
- : Point(InitX,InitY)
- {
- Radius = InitRadius;
- };
-
- void Circle::Show(void)
- {
- Visible = true;
-
- // den Kreis zeichnen
- circle(X, Y, Radius);
- }
-
- void Circle::Hide(void)
- {
- // aktuelle Fabe speichern
- unsigned int TempColor;
-
- // mit der aktuellen Farbe initialisieren
- TempColor = getcolor();
-
- // Zeichenfarbe des Hintergrundes initialisieren
- setcolor(getbkcolor());
- Visible = false;
-
- // zum Löschen in der Hintergrundfarbe zeichnen
- circle(X, Y, Radius);
-
- // Farbe auf die aktuelle Farbe zurücksetzen
- setcolor(TempColor);
- };
-
- void Circle::Expand(int ExpandBy)
- {
- // alten Kreis löschen
- Hide();
-
- // Radius vergrößern
- Radius += ExpandBy;
-
- // negativen Radius vermeiden
- if (Radius < 0)
- Radius = 0;
-
- // neuen Kreis zeichnen
- Show();
- };
-
- void Circle::Contract(int ContractBy)
- {
- // Neuzeichnen mit (Radius - ContractBy)
- Expand(-ContractBy);
- };
-
- void Circle::MoveTo(int NewX, int NewY)
- {
- // alten Kreis löschen
- Hide();
-
- // neue Koordinaten festlegen
- X = NewX;
- Y = NewY;
-
- // auf der neuen Position zeichnen
- Show();
- };
-
- main() // Funktionen testen
- {
- // Initialisieren des Grafiksystems
- int graphdriver = DETECT, graphmode;
- initgraph(&graphdriver, &graphmode,
- "..\\bgi");
-
- // ein Kreis-Objekt definieren und anzeigen
- Circle MyCircle(100, 200, 50);
- MyCircle.Show();
- getch();
-
- // den Kreis bewegen (testet ebenso
- // Hide und Show)
- MyCircle.MoveTo(200, 250);
- getch();
-
- // vergrößern
- MyCircle.Expand(50);
- getch();
-
- // verkleinern
- MyCircle.Contract(75);
- getch();
- closegraph();
- return 0;
- }