Zeichnen von Kreisen

Die Circle-Methode zeichnet eine Vielzahl von kreisförmigen und elliptischen (ovalen) Figuren. Darüber hinaus zeichnet Circle Kreisbögen (Segmente eines Kreises) und Kreisausschnitte ("Kuchenstücke"). Mit den unter­schiedlichen Syntaxvarianten der Circle-Methode können Sie eine breite Palette kurvenförmiger Linien erstellen.

Um einen Kreis zu zeichnen, benötigt Visual Basic die Position des Kreismittelpunkts und den Radius. Die Syntax für einen exakten Kreis ist:

[Objekt.]Circle [Step](x, y), Radius[, Farbe]

Die eckigen Klammern bedeuten, dass sowohl Objekt als auch das Step-Schlüsselwort optional sind. Wenn Sie Objekt nicht angeben, wird das aktuelle Formular als Objekt verwendet. Die Argumente x und y sind die Koordinaten des Mittelpunkts, und Radius ist der Kreisradius. Die folgende Anweisung zeichnet beispielsweise einen Kreis mit den Mittelpunktkoordinaten (1200, 1000) und einem Radius von 750:

Circle (1200, 1000), 750

Das genaue Ergebnis dieser Anweisung hängt von der Größe und dem Koordinatensystem des Formulars ab. Da die Größe des Formulars nicht bekannt ist, kann nicht vorhergesagt werden, ob der Kreis überhaupt sichtbar ist. Mit den Skalierungseigenschaften des Ausgabebereiches können Sie den Mittelpunkt des Kreises genau in der Mitte des Formulars platzieren:

Circle ((ScaleWidth + ScaleLeft) / 2, (ScaleHeight + ScaleTop) / 2), ScaleWidth / 4

An diesem Punkt genügt es zu wissen, dass Grafiken mit den Eigenschaften ScaleWidth und ScaleHeight in der Mitte eines Formulars eingefügt werden können.

Die Bildschirmschoner-Anwendung "Blanker.vbp" erstellt Kreise in der Regenbogenteppich-Demo. Diese Demo gibt eine Reihe von gestrichelten Kreisen um den Mittelpunkt des Formulars aus. Nach kurzer Zeit sehen die Kreise wie ein gewobener runder Teppich aus. Die CircleDemo-Prozedur erstellt die Kreise der Regenbogenteppich-Demo mit den folgenden Anweisungen:

 Abbildung 51:   
Die Regenbogenteppich-Demo
 in der Bildschirmschoner-Anwendung

Sub CircleDemo ()

   Dim Radius

' Farben auf Zufallswerte setzen.

   R = 255 * Rnd

   G = 255 * Rnd

   B = 255 * Rnd

' x, y auf Formularmitte setzen.

   XPos = ScaleWidth / 2

   YPos = ScaleHeight / 2

' Radius auf Wert zwischen 0 und 50% der Formularhöhe setzen.

   Radius = ((YPos * 0.9) + 1) * Rnd

   ' Kreis mit Zufallsfarbe ausgeben.

   Circle (XPos, YPos), Radius, RGB(R, G, B)

End Sub

Zeichnen von Kreisbögen

Sie zeichnen Bögen mit der Circle-Methode, indem Sie Winkelargumente im Bogenmaß angeben, um den Anfang und das Ende des Bogens zu bestimmen. Die Syntax zum Zeichnen eines Bogens lautet:

[Objekt.]Circle [Step](x, y), Radius, [Farbe], Anfang, Ende[, Seitenverhältnis]

Wenn Anfang einen negativen Wert hat, zeichnet Circle eine Linie (Radius), die den Mittelpunkt des Kreises mit Anfang verbindet und interpretiert den Winkel als positiv. Wenn Ende einen negativen Wert hat, zeichnet Circle einen Radius nach Ende und interpretiert den Winkel als positiv. Die Circle-Methode zeichnet immer entgegengesetzt zum Uhrzeigersinn. Die folgende Prozedur zeichnet beispielsweise eine Torte, aus der ein Stück entfernt wurde.

Private Sub Form_Click ()

   Const PI = 3.14159265

   Circle (3500, 1500), 1000, , -PI / 2, -PI / 3

End Sub

Anmerkung   Der Wertebereich von Anfang und Ende erstreckt sich von - 2 mal Pi (-6,28) bis + 2 mal Pi (+6,28).
Sie wandeln einen Wert von Grad ins Bogenmaß um, indem Sie die Gradzahl mit Pi/180 multiplizieren.

Zeichnen von Ellipsen

Das Seitenverhältnis eines Kreises legt fest, ob der Kreis rund (als reiner Kreis) oder gestreckt (als Ellipse) gezeichnet wird. Die vollständige Syntax für die Circle-Methode lautet:

[Objekt.]Circle [Step](x, y), Radius, [Farbe], [Anfang], [Ende] [, Seitenverhältnis]

Die Argumente Anfang und Ende sind optional, doch müssen die Kommas angegeben werden, wenn die Argumente fehlen. Wenn Sie beispielsweise die Argumente Radius und Seitenverhältnis verwenden möchten und die Argumente Farbe, Anfang oder Ende nicht angeben, müssen vier aufeinanderfolgende Kommas eingegeben werden, um anzuzeigen, dass drei Argumente fehlen:

Circle (1000, 1000), 500, , , , 2

Das Argument Seitenverhältnis bezeichnet das Verhältnis zwischen den vertikalen und den horizontalen Abmessungen. Seitenverhältnis ist hier ein positiver Fließkommawert, d.h. Sie können ganzzahlige Werte oder Dezimalzahlen angeben, aber keine negativen Werte. Werden für Seitenverhältnis große Werte angegeben, wird eine Ellipse erzeugt, die entlang ihrer vertikalen Achse gestreckt ist; werden für Seiten­verhältnis kleine Werte angegeben, wird eine Ellipse erzeugt, die entlang ihrer horizontalen Achse gestreckt ist. Da eine Ellipse zwei Radien besitzt (einen horizontalen x-Radius und einen vertikalen y-Radius), bezieht Visual Basic das Argument Radius in einer Circle-Anweisung auf die längere Achse. Wenn Seitenverhältnis kleiner als 1 ist, wird als Radius der x-Radius verwendet. Wenn Seitenverhältnis größer oder gleich 1 ist, wird als Radius der y-Radius verwendet.

Anmerkung   Das Argument Seitenverhältnis bezeichnet das Verhältnis zwischen den vertikalen und den horizontalen Abmessungen, und zwar immer in Form von tatsächlichen physischen Entfernungen. Damit dies (auch bei benutzerdefinierten Skalen) gewährleistet ist, wird der Radius in horizontalen Einheiten ausgedrückt.

Anmerkung   Zum Üben der Parameter zum Zeichnen von Ellipsen gilbt es das Demoprogramm Kreismethode.exe im Übungsordner.

Die folgende Prozedur veranschaulicht, wie verschiedene Seitenverhältnisse bestimmen, ob die Circle-Anweisung das Argument Radius als x-Radius oder als y‑Radius einer Ellipse verwendet:

Abbildung 52:   
Mit der Circle-Methode erstellte Ellipsen

Private Sub Form_Click ()

' Ausgefüllte Ellipse zeichnen.

   FillStyle = 0

   Circle (600, 1000), 800, , , , 3

' Leere Ellipse zeichnen.

   FillStyle = 1

   Circle (1800, 1000), 800, , , , 1 / 3

End Sub