Home Course Index

Course Chapter C1: The Intro Project as a Visual Basic Windows Application


Copyright © by V. Miszalok, last update: 09-05-2010
Mail me...
Let me know
what you think
  Ein leeres Fenster
  DrawString: Hallo Welt
  Fenstergröße anzeigen und farbiger Text
  links, rechts, oben, unten
  Line, Rectangle, Ellipse
  Zeichenstift pen mit zufälligen Farben zeichnet Stern mit zufälligen Strichlängen
  Polygon zeichnen
  Weitere Aufgaben

Ein leeres Fenster

Microsoft Visual Studio starten
File – New – Project – Project Types: Visual Basic Projects, Installed Templates: Windows Forms Application
Name: Intro1
Button OK unten Mitte klicken.
Es meldet sich eine Start Page Form1.vb[Design].
Im Hauptmenü von VS auf Menüpunkt View, auf Unterpunkt Class View klicken.
Es öffnet sich am rechten Rand ein Fenster Class View - Intro1.
Auf das Pluszeichen vor Intro1 drücken, dann auf das Pluszeichen vor { } Intro1, dann auf das Pluszeichen vor Form1 klicken.
Dann Doppelklick auf New( )
Sie sehen jetzt den vorprogrammierten Code von VS.
Sie lassen nur die ersten zwei Zeilen und die allerletzte stehen. Sie löschen alles von und inklusive der Zeile #Region ... bis und inklusive der Zeile #End Region.

Klicken Sie Debug in der Menü-Zeile oberhalb des Hauptfensters
Es öffnet sich ein Untermenü. Klicken Sie auf Start Without Debugging Ctrl F5
Das Rumpfprogramm wird jetzt automatisch übersetzt, gelinkt und gestartet. Beobachten Sie solange das Output-Fenster am unteren Rand von Visual Studio.
Unser Programm startet automatisch als eigenes Fenster, das aus drei Teilen besteht:
1. Hauptfenster = MainFrame mit Titelzeile: Intro1
2. drei funktionierende Buttons für Minimize, Maximize, Close
3. ein schmaler Rahmen, dessen 4 Seiten beweglich sind und dessen 4 Ecken beweglich sind. Verkleinern/Vergrößern Sie den Rahmen.
Diese gesamte Funktionalität ist in der vorprogrammierten Klasse System.Windows.Forms.Form enthalten und steht jetzt zu Verfügung als Basis für Ihr erstes VisualBasic-Programm.

Minimisieren Sie VisualC++, damit Sie ein Gefühl dafür bekommen, dass Intro1.exe ein Windows-Programm ist.
Starten Sie den Explorer. Gehen sie nach C:\temp\Intro1\bin.
Doppelklicken Sie auf Intro1.exe. Sie können so beliebig viele Instanzen von Intro1.exe starten (Diese müssen aber alle einzeln wieder beendet werden, bevor das Programm geändert wird.). Minimisieren Sie den Explorer.

Beenden Sie alle Instanzen von Intro1.exe.
Wichtig: Immer zuerst alle Instanzen von Intro1 beenden, bevor neuer Code eingegeben und übersetzt wird !

 

DrawString: Hallo Welt

Falls Sie die übriggeblieben 3 Zeilen Code nicht mehr sehen, klicken Sie in VS auf den Karteireiter Form1.vb, das bringt den Code zum Vorschein. Schreiben Sie folgende drei Funktionen in Ihre Public Class Form1:

 Public Sub New()
    Me.ClientSize = New Size(800, 600) 'neue Fenstergröße
    AddHandler Me.Paint, AddressOf form1_Paint 'Message WM_PAINT weiterleiten 
    AddHandler Me.Resize, AddressOf form1_Resize 'Message WM_SIZE weiterleiten
 End Sub

 Private Sub form1_Paint(ByVal sender As Object, ByVal pe As PaintEventArgs)
    Dim g As Graphics = pe.Graphics
    Dim sometext As String = "Hello world, here is Intro1 !"
    Dim myfont As New Font("Arial", 16) 'Font und seine Größe wählen
    Dim blackbrush As New SolidBrush(Color.Black) 'Schriftfarbe wählen
    g.DrawString(sometext, myfont, blackbrush, 10, 10) 'schreiben
 End Sub

 Private Sub form1_Resize(ByVal sender As Object, ByVal re As EventArgs)
    Me.Invalidate() 'Message WM_PAINT auslösen
 End Sub

Ihr Progamm muss jetzt insgesamt so aussehen:

Public Class Form1
  Inherits System.Windows.Forms.Form

  Public Sub New()
    Me.ClientSize = New Size(800, 600)
    AddHandler Me.Paint, AddressOf form1_Paint
    AddHandler Me.Resize, AddressOf form1_Resize
  End Sub

  Private Sub form1_Paint(ByVal sender As Object, ByVal pe As PaintEventArgs)
    Dim g As Graphics = pe.Graphics
    Dim sometext As String = "Hello world, here is Intro1 !"
    Dim myfont As New Font("Arial", 16)
    Dim blackbrush As New SolidBrush(Color.Black)
    g.DrawString(sometext, myfont, blackbrush, 10, 10)
 End Sub

 Private Sub form1_Resize(ByVal sender As Object, ByVal re As EventArgs)
    Me.Invalidate()
 End Sub

End Class

Klicken Sie Debug in der Menü-Zeile oberhalb des Hauptfensters
Es öffnet sich ein Untermenü. Klicken Sie auf Start Without Debugging Ctrl F5.
Das Programm wird wieder automatisch übersetzt, gelinkt und gestartet.
Probieren Sie andere Strings, andere Fontgrößen, andere Fonts (z.B. Courier New), andere Farben (z.B. Color.White) und andere Textpositionen.
Wichtiger Hinweis: Wenn Sie sich vertippt haben, dann übersetzt der Compiler nichts, sondern meldet sich mit einer Message Box: There were build errors. Continue ?. Sie quittieren mit No. Am unteren Rand von VS erscheint ein Fenster mit Fehlermeldungen. Scrollen Sie innerhalb dieser Fehlerliste nach oben zur ersten Meldung. Doppelklicken Sie diese erste Zeile. Der Cursor springt nun automatisch in Ihren Code auf die Zeile, wo der Fehler entdeckt wurde. Suchen Sie dort den Fehler und beseitigen Sie ihn. Ignorieren Sie alle weiteren Fehler (das sind meistens Folgefehler des ersten Fehlers) und übersetzen Sie neu. Diesen Vorgang wiederholen Sie so oft, bis keine Fehlermeldung mehr erscheint und Ihr übersetztes und gelinktes Programm automatisch startet.

 

Fenstergröße anzeigen und farbiger Text

Version2: Beenden Sie Ihr Programm Intro1.
Schreiben Sie fünf weitere Zeilen in die Funktion Private Sub form1_Paint(...) unterhalb die schon vorhandenen Befehle, aber vor End Sub:

    'Version 2 **************************************************
    Dim r As Rectangle = Me.ClientRectangle 'Frage an Windows nach aktueller Fenstergröße
    sometext = sometext.Format("width={0:####},   height={1:####}", r.Width, r.Height) 
    g.DrawString(sometext, myfont, blackbrush, 10, 30)
    sometext = "Change the size of your window !"
    g.DrawString(sometext, myfont, New SolidBrush(Color.Red), 10, 50 )

Klicken Sie Debug und dann Start Without Debugging Ctrl F5.

 

links, rechts, oben, unten

Version3: Beenden Sie Ihr Programm Intro1.
Schreiben Sie sieben weitere Zeilen in die Funktion Private Sub form1_Paint(...) unterhalb die schon vorhandenen Befehle:

    'Version 3 ***************************************************
    Dim p As Point 'Mittelpunkt
    p.X = r.Width / 2
    p.Y = r.Height / 2
    g.DrawString("left", myfont, blackbrush, 0, p.Y)
    g.DrawString("right", myfont, blackbrush, r.Width - 50, p.Y)
    g.DrawString("top", myfont, blackbrush, p.X, 0)
    g.DrawString("bottom", myfont, blackbrush, p.X, r.Height - 30)

Klicken Sie Debug und dann Start Without Debugging Ctrl F5.

 

Line, Rectangle, Ellipse

Version4: Beenden Sie Ihr Programm Intro1.
Schreiben Sie 8 weitere Befehle in die Funktion Private Sub form1_Paint(...) unterhalb die schon vorhandenen Befehle:

    'Version 4 ***************************************************
    Dim mypen As New Pen(blackbrush, 3)
    g.DrawLine(mypen, 0, 0, r.Width, r.Height)
    g.DrawLine(mypen, r.Width, 0, 0, r.Height)
    Dim w5 As Integer = r.Width \ 5
    Dim h5 As Integer = r.Height \ 5
    g.FillRectangle(New SolidBrush(Color.White), w5, h5, 3 * w5, 3 * h5)
    g.DrawRectangle(mypen, w5, h5, 3 * w5, 3 * h5)
    g.DrawEllipse(mypen, w5, h5, 3 * w5, 3 * h5)

Klicken Sie Debug und dann Start Without Debugging Ctrl F5.

 

Zeichenstift pen mit zufälligen Farben zeichnet Stern mit zufälligen Strichlängen

Version5: Beenden Sie Ihr Programm Intro1.
Schreiben Sie folgende weiteren Befehle in die Funktion Private Sub form1_Paint(...) unterhalb die schon vorhandenen Befehle:

    'Version 5 ***************************************************
    Dim nn As Integer = 120 'Anzahl der Striche
    Dim splash(nn) As Point 'Speicherplatz für nn Koordinatenpaare x,y
    Dim arcus As Double = 2.0 * 3.14159 / nn '1/nn ter Teil des Umfangs des Einheitskreises
    Dim i As Integer
    Dim radius_x As Double = 1.5 * w5 ' maximaler horizontaler Radius
    Dim radius_y As Double = 1.5 * h5 ' maximaler horizontaler Radius
    For i = 0 To nn
      Dim factor As Double = Rnd() 'Zufallszahl zwischen 0.0 und 1.0
      If factor < 0.25 Then factor = 0.25 'aber nicht kleiner als 1/4
      Dim cosinus As Double = radius_x * factor * System.Math.Cos(CDbl(i) * arcus)
      Dim sinus As Double = radius_y * factor * System.Math.Sin(CDbl(i) * arcus)
      mypen = New Pen(Color.FromArgb(255 * Rnd(), 255 * Rnd(), 255 * Rnd()), 20) 'neuen Pinsel in Zufallsfarbe tauchen
      g.DrawLine(mypen, p.X, p.Y, p.X + CInt(cosinus), p.Y + CInt(sinus)) 'radialen Strich ziehen
      mypen.Dispose() 'Pinsel wegwerfen
      splash(i).X = p.X + CInt(cosinus * 0.8) 'Koordinate x etwas kürzen und speichern für Version 6
      splash(i).Y = p.Y + CInt(sinus * 0.8) 'Koordinate y etwas kürzen und speichern für Version 6
    Next i

Klicken Sie Debug und dann Start Without Debugging Ctrl F5.
Erproben Sie das Programm durch Ziehen am Fensterrand.

 

Polygon zeichnen

Version6: Beenden Sie Ihr Programm Intro1.
Schreiben Sie folgende weiteren Befehle in die Funktion Private Sub form1_Paint(...) unterhalb die schon vorhandenen Befehle:

   'Version 6 ***************************************************
   g.FillClosedCurve(New SolidBrush(Color.Red), splash)
   g.DrawString("splash !", New Font("Arial", 20), New SolidBrush(Color.White), p.X - 50, p.Y - 12)

Klicken Sie Debug und dann Start Without Debugging Ctrl F5.
Erproben Sie das Programm durch Ziehen am Fensterrand.

 

Weitere Aufgaben

Klicken Sie auf Help in der Menüleiste von VS. Klicken Sie auf das Untermenü Index.
Gehen Sie in das Feld Filtered by: und wählen Sie dort Visual Basic. Dann geben Sie im Feld Look for: folgende Schlüsselworter ein: DrawString, DrawLine, Rnd, FillClosedCurve, Pen, Brush etc. Sie bekommen dann eine Auswahl von Stichwörtern, mit dem gleichen Anfang. Lesen Sie die Hilfetexte. Die Hilfetexte überdecken Ihren Code. Wenn Sie mit dem lesen fertig sind, entfernen Sie die Hilfetexte mit deren X-Button in deren rechter oberer Fensterecke.
Beenden Sie VS, starten sie den Explorer, löschen Sie die gesamte Directory C:\temp\Intro1
Starten Sie VS wieder und erzeugen dasselbe Programm so oft, bis Sie das Programm ohne Anleitung und schnell von Null an erstellen, verändern und bedienen können.
Benutzen Sie Drag&Drop beim Schreiben von Code = verschieben und kopieren mit Maus mit/ohne Strg-Taste.
Erfinden und erproben Sie neue Varianten des Programms (in Form von neuen Projekten Intro2, Intro3 usw. nach obigem Muster), z.B. bunte Striche waagrecht parallel, senkrecht parallel, bunte Rechtecke und Ellipsen an zufälligen Stellen etc.


top of page: