Hallo Corelers
Das wird warscheinlich eins meiner letzten tutorials
es ist komplett sinlos und ihr werdet nur sehr wenig zum Thema Visual Basic dazulernen da sich dieses Tutorial zu den Formen ist
Vllt haben sich mache von euch schonmal gefragt wie man eigene forms hinbekommt (wie z.b. mein neustes Tool) nun die antwort ist ganz einfach
ein Bild und ein paar zeilen Code
1. Eckige Forms
Die eckigen Forms Gehen am leichtsesten dafür erstellen wir ein BackGround image das die Form darstellt (Photoshop, Gimp) das speichert ihr in einem der Formate ab:
Jpeg, PNG, BMP, Gif(auch animiert)
nun geht ihr in dem Form Editor von Visual Studio.
Ihr Wählt die Form aus und seht im Eigenschafts fenster nach der Eigenschat Form Boarder Style.
Die setzt ihr auf "None". Nun sollte sich eure Form verändert haben Windows Bar ist weg.
nun geht ihr auf die eigenschaft Background Image und klickt auf den Button mit den 3 Punkten nun klickt ihr bei Projectressourcedatei auf Import. Im sich öffnenden Fenster wählt ihr die BG datei aus.
nun habt ihr schonmal eure eigene Form jetzt kommen wir zu den eigenschaften die eine windows form hat
1. Bewegen
als erstes einmal denkt ihr darüber nach was auslöser sein soll (Bei windows forms ist is die windows bar) nehmt ihr das ganze Interface oder nur einen teil
für nur einen teil erstellt ihr ein Panel, das ihr an die position setzt. nun geht ihr bei Panel1 für die bereich oder Form1 bei dem ganzen fenster im eigenschafts fenster auf Events (Der Blitz) und sucht nach MouseDown
MouseDown ist das Event sobald/solange ein mausbutton runter geht(bei gedrückt halten wird es oft hintereinander ausgeführt)
nun klickt ihr doppelt auf das leere Feld neben dem Event
So nun kommt ihr in den Quelltext editor da sollte etwa das stehen
nun fügt ihr über diesem Code
en
und in diese Sub fügt ihr
ein
zur erklärung ActualMousePos ist die variable in der die position der Maus gespeichert wird wenn geklickt wurde man braucht -e da sonnst der wert falsch für den späteren code falsch ist
bei MouseDown wird eben ein neuer werd übergeben
so nun gehen wir wieder im Form editor zu den events und souchen MousMove raus und klicken wieder Doppelt auf das leere Feld und fügen in die neu entstandene sub folgendes ein
damit wird als erstes mit der If abfrage überprüft ob auch mit dem linken Button geklickt wurde.
die variable mousepos speichert erst mal die aktuelle maus Position
dann mit offset wird sozusagen der unterschied zwischen ActualMousePos und MousPos berechnet nachdem sich auch die form dann mit Me.Location richtet
Warum bewegt es sich nur wenn die mous gedrückt ist?
ganz einfach weil sich nur dann ein unterschied mit ActualMousePos im offset erstellt wird
nun nur noch picture Boxen für x, minniemieren, und maximieren button erstellen und bei dem Click event dann folgendes reinschreiben
Für X
damit wird das Programm Beendet
für Minnimieren
damit wird der Status des Interfaces auf minimiert gesetzt
und für Maximieren
durch die if abfrage wird abgefragt welcher status ist und welcher eingenommen werden mss
nun zum vergrössern der Form durch ziehen
dafür erstellen wir 2 Panels
ich habe panel1 für die rechte seite für die seiteneinstellung genommen und pannel 2 für die Höhen einstellung unten hin gesetzt diese zieht ihr so das sie zur grössen einstellung dienen (solang wie die seite die sie abdecken und so von der breite so wenig wie möglich)
nun geht ihr im eigenschafts fenster von Pannel 1 auf Cursor und stellt da den cursor Pfel rechts-links ein
dann geht ihr auf events und erstellt damit die sub für MouseDown und MouseMove Event im code editor bearbeitet ihr die sub's dann so
Alles anzeigen
das meiste kennt ihr von Form1Move was ist neu
vorher ging es um eine location die wird vom NullPunkt (Linke obere Bildschirmecke) abgemessen da wir allerdings jtz von einer size reden die von dem NullPunkt Fom1.Location ausgehet müssen wir auch den punkt für die neue grösse - den punkt der Form rechnen.
das panel soll sich ja auch mitbewegen beim vergrössern der Form
beim vergrössern der form muss sich auch die grösse des anderen panels verändern
nun zum code des 2ten Panels
Alles anzeigen
gleiches wie oben
nun gibt es noch einige probleme
1. die panels sind grau
das beheben wir indem wir im eigenschaftsFenster die eigenschaft BackgroundColor im Bereich Web ganz oben auf transparent setzen
2. beim bewegen der form bewegen sich die pannels nicht
dafür editiren wir den code so
damit wird einfach die position aktualisiert
3. Beim Maximieren kommt es zu Bugs
das geht auch ganz einfach indem wir den code so ändern
damit werden einfach die panels "ausgeschaltet" fürs maximieren
so damit wären wir eigentlich fertig das programm ist benutzbar
2. Runde/Mehreckige Formen
So nun zu den mehreckigen Formen
ihr erstellt ein Bild z.b. Ein Pentagramm. Den Hintergrund lasst ihr transparent und sichert es als png oder Gif datei. Nun sucht ihr eine Farbe die nie in eurem Programm vorkommen wird.
Im Form Editor von Visual Basic stellt ihr bei den Eigenschaften für Form1 diese Farbe als Hintergrund Farbe ein und euer Bild als Background image
nun Skript ihr in den Eigenschaften runter und sucht nach transparenzkey oder sowas und stellt da die gleiche Farbe ein.
Und eure Form ist bereit
Das wird warscheinlich eins meiner letzten tutorials
es ist komplett sinlos und ihr werdet nur sehr wenig zum Thema Visual Basic dazulernen da sich dieses Tutorial zu den Formen ist
Vllt haben sich mache von euch schonmal gefragt wie man eigene forms hinbekommt (wie z.b. mein neustes Tool) nun die antwort ist ganz einfach
ein Bild und ein paar zeilen Code
1. Eckige Forms
Die eckigen Forms Gehen am leichtsesten dafür erstellen wir ein BackGround image das die Form darstellt (Photoshop, Gimp) das speichert ihr in einem der Formate ab:
Jpeg, PNG, BMP, Gif(auch animiert)
nun geht ihr in dem Form Editor von Visual Studio.
Ihr Wählt die Form aus und seht im Eigenschafts fenster nach der Eigenschat Form Boarder Style.
Die setzt ihr auf "None". Nun sollte sich eure Form verändert haben Windows Bar ist weg.
nun geht ihr auf die eigenschaft Background Image und klickt auf den Button mit den 3 Punkten nun klickt ihr bei Projectressourcedatei auf Import. Im sich öffnenden Fenster wählt ihr die BG datei aus.
nun habt ihr schonmal eure eigene Form jetzt kommen wir zu den eigenschaften die eine windows form hat
1. Bewegen
als erstes einmal denkt ihr darüber nach was auslöser sein soll (Bei windows forms ist is die windows bar) nehmt ihr das ganze Interface oder nur einen teil
für nur einen teil erstellt ihr ein Panel, das ihr an die position setzt. nun geht ihr bei Panel1 für die bereich oder Form1 bei dem ganzen fenster im eigenschafts fenster auf Events (Der Blitz) und sucht nach MouseDown
MouseDown ist das Event sobald/solange ein mausbutton runter geht(bei gedrückt halten wird es oft hintereinander ausgeführt)
nun klickt ihr doppelt auf das leere Feld neben dem Event
So nun kommt ihr in den Quelltext editor da sollte etwa das stehen
nun fügt ihr über diesem Code
en
und in diese Sub fügt ihr
ein
zur erklärung ActualMousePos ist die variable in der die position der Maus gespeichert wird wenn geklickt wurde man braucht -e da sonnst der wert falsch für den späteren code falsch ist
bei MouseDown wird eben ein neuer werd übergeben
so nun gehen wir wieder im Form editor zu den events und souchen MousMove raus und klicken wieder Doppelt auf das leere Feld und fügen in die neu entstandene sub folgendes ein
damit wird als erstes mit der If abfrage überprüft ob auch mit dem linken Button geklickt wurde.
die variable mousepos speichert erst mal die aktuelle maus Position
dann mit offset wird sozusagen der unterschied zwischen ActualMousePos und MousPos berechnet nachdem sich auch die form dann mit Me.Location richtet
Warum bewegt es sich nur wenn die mous gedrückt ist?
ganz einfach weil sich nur dann ein unterschied mit ActualMousePos im offset erstellt wird
nun nur noch picture Boxen für x, minniemieren, und maximieren button erstellen und bei dem Click event dann folgendes reinschreiben
Für X
damit wird das Programm Beendet
für Minnimieren
damit wird der Status des Interfaces auf minimiert gesetzt
und für Maximieren
durch die if abfrage wird abgefragt welcher status ist und welcher eingenommen werden mss
nun zum vergrössern der Form durch ziehen
dafür erstellen wir 2 Panels
ich habe panel1 für die rechte seite für die seiteneinstellung genommen und pannel 2 für die Höhen einstellung unten hin gesetzt diese zieht ihr so das sie zur grössen einstellung dienen (solang wie die seite die sie abdecken und so von der breite so wenig wie möglich)
nun geht ihr im eigenschafts fenster von Pannel 1 auf Cursor und stellt da den cursor Pfel rechts-links ein
dann geht ihr auf events und erstellt damit die sub für MouseDown und MouseMove Event im code editor bearbeitet ihr die sub's dann so
Quellcode
- Dim ActualMousePos2 As Point
- Private Sub Panel1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseDown
- ActualMousePos2 = New Point(-e.X, -e.Y)
- End Sub
- Private Sub Panel1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseMove
- If e.Button = Windows.Forms.MouseButtons.Left Then
- Dim mousePos As Point = Control.MousePosition
- mousePos.Offset(ActualMousePos2)
- Me.Size = New Size(mousePos.X - Me.Location.X, Me.Size.Height)
- Panel1.Location = New Point(Me.Width - Panel1.Width, Me.Height - Panel1.Height)
- Panel2.Size = New Size(Me.Width, Panel2.Height)
- End If
- End Sub
das meiste kennt ihr von Form1Move was ist neu
vorher ging es um eine location die wird vom NullPunkt (Linke obere Bildschirmecke) abgemessen da wir allerdings jtz von einer size reden die von dem NullPunkt Fom1.Location ausgehet müssen wir auch den punkt für die neue grösse - den punkt der Form rechnen.
das panel soll sich ja auch mitbewegen beim vergrössern der Form
beim vergrössern der form muss sich auch die grösse des anderen panels verändern
nun zum code des 2ten Panels
Quellcode
- Dim ActualMousePos3 As Point
- Private Sub Panel2_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel2.MouseDown
- ActualMousePos3 = New Point(-e.X, -e.Y)
- End Sub
- Private Sub Panel2_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel2.MouseMove
- If e.Button = Windows.Forms.MouseButtons.Left Then
- Dim mousePos As Point = Control.MousePosition
- mousePos.Offset(ActualMousePos3)
- Me.Size = New Size(Me.Size.Width, mousePos.Y - Me.Location.Y)
- Panel2.Location = New Point(Me.Width - Panel2.Width, Me.Height - Panel2.Height)
- Panel1.Size = New Size(Panel1.Width, Me.Height)
- End If
- End Sub
gleiches wie oben
nun gibt es noch einige probleme
1. die panels sind grau
das beheben wir indem wir im eigenschaftsFenster die eigenschaft BackgroundColor im Bereich Web ganz oben auf transparent setzen
2. beim bewegen der form bewegen sich die pannels nicht
dafür editiren wir den code so
Quellcode
- If e.Button = Windows.Forms.MouseButtons.Left Then
- Dim mousePos As Point = Control.MousePosition
- mousePos.Offset(ActualMousePos.X, ActualMousePos.Y)
- Me.Location = mousePos
- [COLOR="Red"]Panel1.Location = New Point(Me.Width - Panel1.Width, Me.Height - Panel1.Height)
- Panel2.Location = New Point(Me.Width - Panel2.Width, Me.Height - Panel2.Height)[/COLOR]
- End If
damit wird einfach die position aktualisiert
3. Beim Maximieren kommt es zu Bugs
das geht auch ganz einfach indem wir den code so ändern
damit werden einfach die panels "ausgeschaltet" fürs maximieren
so damit wären wir eigentlich fertig das programm ist benutzbar
2. Runde/Mehreckige Formen
So nun zu den mehreckigen Formen
ihr erstellt ein Bild z.b. Ein Pentagramm. Den Hintergrund lasst ihr transparent und sichert es als png oder Gif datei. Nun sucht ihr eine Farbe die nie in eurem Programm vorkommen wird.
Im Form Editor von Visual Basic stellt ihr bei den Eigenschaften für Form1 diese Farbe als Hintergrund Farbe ein und euer Bild als Background image
nun Skript ihr in den Eigenschaften runter und sucht nach transparenzkey oder sowas und stellt da die gleiche Farbe ein.
Und eure Form ist bereit