Graphics Reference
In-Depth Information
in Strukturen eingebaut, dann ist die interne, einfache Adressberechnung erheblich
aufwendiger.
Eingangs haben wir eine einfache Struktur für die Knotendaten in einem Gra-
fikprogramm beschrieben. Als nächstes Beispiel betrachten wir eine Struktur zur
Beschreibung von Facetten mit drei oder vier Ecken.
Public Structure Elemente
' Struktur der Elemente
Dim Bez As String
' z.B. DREK-12345
Dim Ecke() As Short
' Knoten-LFNR
Dim sicht As Boolean
' =T wenn sichtbar, sonst =F
Dim Spiegel As Boolean
' =T wenn Oberfläche spiegelt
Dim Farbe As Color
' Farbe
Dim Transparenz As Byte
' Durchlässigkeit 0-100 (%)
Dim ZView As Single
' größte Z-Tiefe View-System
End Structure
In Anlehnung an die „Node“-Struktur soll hier keine beliebige Nummer zur Identi-
fizierung der Facette verwendet werden, sondern ein String .Bez für eine beliebige
Bezeichnung. Ferner ist ein Array .Ecke() vorgesehen, der drei oder vier laufen-
den Nummern der Facettenknoten aus dem Array Knoten() enthält.
Im Programm wird ein Array Facette() durch folgende Anweisung zwar
initialisiert, belegt aber immer noch keinen Speicherplatz:
' Initialisieren des "Facette"-Arrays
Public Facette() As Elemente
Erst wenn die Anzahl Anz der Facetten bekannt ist, erfolgt mit der ReDim -
Anweisung die physikalische Teil-Belegung von Speicherplatz:
Anz = 4
ReDim Facetten(Anz) ' festlegen aktuelle Größe
Facette() ist nun ein 1-dimensionales Array mit 5 Elementen (0-4), wobei jedes
seiner Elemente unterschiedlich lang ist, weil:
die Stringlängen für die Bezeichnung variieren und
das Array .Ecke() mit der obigen ReDim -Anweisung keinen Speicherplatz
bekommt. Die ReDim -Anweisung
Anz=4
ReDim Facetten(Anz).Ecke(3)
reserviert für das Array Facette() Speicherplatz für die Elemente 0-4 wie
oben. Nur für Facette(4) ist Ecke() mit den Elementen 0-3 dimensioniert, je-
doch nicht für alle Ecke() -Arrays der anderen Facetten, diese müssen ggf. mit
einer Schleife initialisiert werden.
Da VB.NET im Gegensatz zum alten Visual-Basic keine festen Array-Größen in
der Struktur akzeptiert, sondern diese erst mittels ReDim zur Laufzeit festlegt, er-
gibt sich für die internen Adressberechnungen erheblicher Mehraufwand, weil jedes
Element von Facette() unterschiedlich lang sein kann. Eine verbesserte Version mit
einer konstanten Elementlänge von 25 Byte könnte so aussehen:
Search WWH ::




Custom Search