Visual Basic 6: Grafik

Aus Wikibooks

Wechseln zu: Navigation, Suche

Zurück zu Visual_Basic_6

Inhaltsverzeichnis

[Bearbeiten] Grafikfunktionen

[Bearbeiten] Farben

[Bearbeiten] Konstanten

[Bearbeiten] Selbst mixen mit RGB()

[Bearbeiten] Pixel setzen: PSet

PSet (x, y)[, Farbe]

Mittels PSet können Sie gezielt einen einzelnen Pixel einfärben. Das folgende Beispiel soll zeigen, dass man mit dieser Methode so ziemlich alles zeichnen kann, was man will.

Private Sub Form_Load()
Dim I As Long
Me.AutoRedraw = True
For I = 20 To 200
   Me.PSet (I, I / (I - 10) * 50), vbBlack
Next I
End Sub

Über die Eigenschaft DrawWidth des Formulars (oder des Bildfelds) haben Sie die Möglichkeit, die Dicke der Punkte zu beeinflussen.

Allerdings ist PSet relativ langsam, und zieht die Performance in den Keller, wenn man vorhat größere Dinge zu zeichnen.

[Bearbeiten] Linien zeichen: Line

Line(x1,y1) - (x2,y2), a

Mittels Line können Sie gerade Linien von einem Startpunkt zu einem Endpunkt zeichnen. Das folgende Beispiel zeigt wie man ein Kreuz zentriert über das ganze Formular erstellt. Mit a kann zusätzlich die Farbe der Linie angegeben werden.

Private Sub Form_Load()
   Me.AutoRedraw = True
   Me.Line (Me.Width / 2, 0) - (Me.Width / 2, Me.Height)
   Me.Line (0, Me.Height / 2) - (Me.Width, Me.Height / 2)
End Sub


[Bearbeiten] Rechtecke

Private Sub Form_Load()

  Me.AutoRedraw = True
  Me.Line (Me.Width / 4, Me.Height / 4) - (Me.Width / 2, Me.Height/ 2),vbred,b ' Block ~ Rechteck
  Me.Line (Me.Width / 4, Me.Height / 4) - (Me.Width / 2, Me.Height/ 2),vbred,bf ' Block ~ Rechteck und f ~ filled

End Sub

[Bearbeiten] Kreise und Ellipsen: Circle

Me.Circle (x, y), Radius, Farbe, -Start, -Ende, Höhe/Breite-Verhältnis

x und y: Koordinaten des Mittelpunktes

Start und Ende: bei Kreisbögen seien sie Anfangs- und Endpunkt des Kreisbogens bezüglich 90° (also dem "rechtesten Punkt") in Bogenmaß (Skalierung und Zeichnung gegen den Uhrzeigersinn). Ist einer der Werte negativ, so wird der entsprechende Punkt zusätzlich mit dem Kreismittelpunkt verbunden.

Höhe/Breite-Verhältnis: Um Ellipsen zu zeichnen, lässt sich hier das Verhältnis von Höhe zu Breite angeben, wobei sich dann der Radius dann immer dem größeren der beiden Werte entspricht.

Beispiel: Rotes "Pizzaviertel"

Me.Circle (1000, 1000), 500, vbRed, -1.5708, -3.1416

Blaue Ellipse

Me.Circle (2000, 1000), 500, vbBlue, , , 2.0

[Bearbeiten] Bilder zeichnen: PaintPicture

[Bearbeiten] Farben: Das Experimentieren mit Paletten

[Bearbeiten] Funktionsdarstellung mit der Scale-Methode

Im folgenden wird ein kleines Programm zur Darstellung mathematischer Funktionen beschrieben.

Siehe auch http://www.madeasy.de/2/prgfunkt.htm

Bild:Fkt.PNG

Hinter dem Befehl Koordinatensystem steht folgender Code:

Sub Befehl1_Click () 
Scale (-100, 100)-(100, -100)' Benutzerdefiniertes Koordinatensystem. 
Line (-100, 0)-(100, 0) 
Line (0, -100)-(0, 100) 
End Sub 

Hinter dem Befehl Funktion f(x) = x^2 steht folgender Code :

Sub Befehl2_Click () 
DrawWidth = 3 
For x = -100 To 100 Step .2 
 y = x^2 
 PSet (x, y) 
Next x 
End Sub 

Wenn Sie mit dem Programm arbeiten wollen, müssen Sie immer erst auf den Befehl1 drücken und das Koordinatensystem darstellen. dabei wird auch der Scale Befehl aktiviert.

Dann können Sie verschiedene Funktionen beim Befehl 2 eingeben. Spielen Sie mit den einzelnen Größen etwas herum und beobachten Sie wie sich die Grafiken ändern. Im Bild ist die Funktion f(x) = x^2 dargestellt.

[Bearbeiten] Gausssche Normalverteilung als Grafik

Analog der Funktionsdarstellung weiter oben, kann man eine Gaussche Normlverteilung als Funktion darstellen.

Siehe auch http://www.madeasy.de/2/gauss.htm

Man braucht eine Form und 2 Befehlsbuttons für das Programm:

Der Code

Sub Befehl1_Click ()
Scale (-5, 5)-(5, -5)' Benutzerdefiniertes Koordinatensystem.
Line (-5, 0)-(5, 0)
Line (0, -5)-(0, 5)
End Sub


Sub Befehl2_Click ()
Dim x As Double, y As Double, e As Double
Drawwidth = 2
e = 2.7182
For x = -2 To 2 Step .01
 y = e ^ (-x * x)
 'Einfache Gaussformel mit a = 1 und b = 1 
 PSet (x, y)
Next x
End Sub

[Bearbeiten] Gaussfunktion mit variierendem Parameter a

Wenn man sehen will welchen Einfluß der Parameter a in der Gaussfunktion hat, dann variiert man ihn am besten in einer Schleife durch.

Folgendes Beispiel zeigt das Ergebnis:

Bild:Gauss1.PNG

Sub Befehl1_Click ()
Scale (-5, 5)-(5, -5)' Benutzerdefiniertes Koordinatensystem.
Line (-5, 0)-(5, 0)
Line (0, -5)-(0, 5)
End Sub

Sub Befehl2_Click ()
Dim x As Double, y As Double, e As Double, a as Long
Drawwidth = 1
e = 2.7182
For a = 1 To 5
 For x = -5 To 5 Step .01
  y = a * e ^ (-x * x)
  PSet (x, y)
 Next x
Next a
End Sub

[Bearbeiten] Gaussfunktion mit variierendem Parameter b

Wenn man sehen will welchen Einfluß der Parameter b in der Gaussfunktion hat, dann variiert man ihn am besten in einer Schleife durch.

Folgendes Beispiel zeigt das Ergebnis:

Bild:Gauss2.PNG

Sub Befehl1_Click ()
Scale (-5, 2)-(5, -2)' Benutzerdefiniertes Koordinatensystem.
Line (-5, 0)-(5, 0)
Line (0, -5)-(0, 5)
End Sub

Sub Befehl2_Click ()
Dim x As Double, y As Double, e As Double, b As Double
Drawwidth = 1
e = 2.7182
For b = .1 To 5 Step .1
 For x = -5 To 5 Step .01
  y = e ^ (-b * x * x)
  PSet (x, y)
 Next x
Next b
End Sub

[Bearbeiten] Gaussfunktion mit Erwartungswert und Standdardabweichung

Will man die Gaussfunktion entlang der x-Achse verschieben, dann muß man einen weiteren Parameter einführen. Er wird im Programm als Erwartungswert E bezeichnet. Die Eulersche Zahl wird diesmal mit eu bezeichnet. S ist die Standdarabweichung.

Das dazugehörige Programm hat folgenden Code:

Sub Befehl1_Click ()
Scale (-10, 10)-(10, -10)' Benutzerdefiniertes Koordinatensystem.
Line (-10, 0)-(10, 0)
Line (0, -10)-(0, 10)
End Sub

Sub Befehl2_Click ()
Dim x As Double, y As Double, E As Double, eu As Double, S as Double
'E = Erwartungswert von x
eu = 2.718
'eu = eulersche Zahl
'S = Standardabweichung
E = 0: s = .4: 
'beliebig angenommene Werte für E den Mittelwert der Glocke und S = die Breite der Glocke
For x = -100 To 100 Step .05
 'Formel für die Gausssche Glockenkurve
 y = 1 / (2 * 3.14 * s * s) * eu ^ -(x - E) ^ 2 / (2 * s * s)
 PSet (x, y)
Next x
End Sub

Die Grafik sieht dann so aus:



[Bearbeiten] Gaussfunktion mit variablem Erwartungswert und Standdardabweichung

Will man verschiedene Parameter von s und E im Programmlauf ändern und ausprobieren, dann kann man noch 2 Textfelder in der Form hinzufügen. In die Textfelder kann man dann E und s eingeben und sich die neue Grafik anschauen.

Der Code dazu:

Sub Befehl1_Click ()
Scale (-10, 10)-(10, -10)' Benutzerdefiniertes Koordinatensystem.
Line (-10, 0)-(10, 0)
Line (0, -10)-(0, 10)
End Sub

Sub Befehl2_Click ()
Dim x As Double, y As Double, E As Double, eu As Double, S as Double
Drawwidth = 2
'E = Erwartungswert von x
E = Val(Text1.Text)
eu = 2.718
s = Val(Text2.Text)
'S = Standardabweichung
For x = -100 To 100 Step .05
 'Formel für die Gausssche Glockenkurve
 y = 1 / (2 * 3.14 * s * s) * eu ^ -(x - E) ^ 2 / (2 * s * s)
 PSet (x, y)
Next x
End Sub

So sieht der Screenshot aus:


Persönliche Werkzeuge
Buch erstellen
  • Artikel hinzufügen
  • Hilfe zu Sammlungen