vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Oberfläche · Effekte   |   VB-Versionen: VB4, VB5, VB611.01.01
Polygone Formen

Die meisten VB'ler werden wahrscheinlich wissen, wie man ein rundes oder ovales Fenster in Visual Basic erstellt. Aber was ist, wenn man ein Fenster...

Autor:   Michael WanglerBewertung:     [ Jetzt bewerten ]Views:  15.639 
ohne HomepageSystem:  Win9x, Win8, Win10, Win11 Beispielprojekt auf CD 
Unregelmäßige Formen

Die meisten VB'ler werden wahrscheinlich wissen, wie man ein rundes oder ovales Fenster in Visual Basic erstellt. Aber was ist, wenn man ein Fenster haben möchte, dass nur drei, oder sogar mehr als 4 Ecken hat. Kein Problem: Unser nachfolgender Tipp zeigt Ihnen, wie's geht.

Schnellstart:
1. Starten Sie Visual Basic und Erstellen ein ganz normales EXE-Projekt
2. Fügen Sie folgenden Code in das Code-Fenster der Form1:

' Zunächst die benötigten API-Funktionen
Private Declare Function SetWindowRgn Lib "user32" ( _
  ByVal hwnd As Long, _
  ByVal hRgn As Long, _
  ByVal bRedraw As Boolean) As Long
Private Declare Function DeleteObject Lib "gdi32" ( _
  ByVal hObject As Long) As Long
Private Declare Function CreatePolygonRgn Lib "gdi32" ( _
  lpPoint As POINTAPI, _
  ByVal nCount As Long, _
  ByVal nPolyFillMode As Long) As Long
 
Private Type POINTAPI
  X As Long
  Y As Long
End Type
 
Private P() As POINTAPI  
Dim hRgn As Long
 
' Hier wird dem Formular das Aussehen gegeben.
' DefinePolygon: Festlegen der Eckpunkte
' CreatePolygonWindow: Fenster modelieren 
'  [Formularname], [Breite], [Höhe]
 
Private Sub Form_Load()
  DefinePolygon
  CreatePolygonWindow Form1, 200, 150
End Sub
 
' Polygones Objekt aus dem Speicher werfen
Private Sub Form_Unload(Cancel As Integer)
  KillObject Form1
End Sub
 
' Jetzt erden die Eckpunkte definiert
Sub DefinePolygon()
  ReDim P(11)			' Anzahl Eckpunkte
  P(0).X = 0: P(0).Y = 0	' ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  P(1).X = 100: P(1).Y = 0	' 
  P(2).X = 100: P(2).Y = 15	' 
  P(3).X = 200: P(3).Y = 100	' 
  P(4).X = 100: P(4).Y = 100	' 
  P(5).X = 150: P(5).Y = 150	' X- und Y-Koordinaten
  P(6).X = 50: P(6).Y = 150	' 
  P(7).X = 50: P(7).Y = 125	' 
  P(8).X = 25: P(8).Y = 125	' 
  P(9).X = 25: P(9).Y = 150	' 
  P(10).X = 0: P(10).Y = 150	' ____________________
 
  P(UBound(P)).X = P(0).X
  P(UBound(P)).Y = P(0).Y
 
  ' Hier werden alle Koordinaten erfasst
  Dim m
  Dim Wdth As Integer
  Dim Hght As Integer
 
  Wdth = 0: Hght = 0
  For m = 0 To UBound(P)      
    If P(m).X > Wdth Then   
      Wdth = P(m).X       
    End If                  
    If P(m).Y > Hght Then   
      Hght = P(m).X       
    End If                  
  Next                        
End Sub  
 
' Hier steht der Code um das
' Polygone Fenster zu erstellen
Sub CreatePolygonWindow(Obj As Object, Wdth, Hght)
  Dim FF1 As Integer
  Dim FF2 As Integer
 
  If TypeOf Obj Is Form Then
    ' Wenn das Objekt ein Formular ist,
    ' Auflösung in Pixel festlegen
    FF1 = Screen.TwipsPerPixelX         
    FF2 = Screen.TwipsPerPixelY         
  Else
    Obj.Container.ScaleMode = vbPixels
    FF1 = 1: FF2 = 1
  End If
 
  ' Wenn das Objekt kein Formular ist (z.B PictureBox),
  ' dann dessen größe in Pixel umberechnen
  Obj.ScaleMode = vbPixels
  Obj.Width = Wdth * FF1
  Obj.Height = Hght * FF2
 
  ' Benötigter API-Aufruf
  Dim Res As Long
  hRgn = CreatePolygonRgn(P(0), UBound(P), 0) 
  Res = SetWindowRgn(Obj.hwnd, hRgn, True)
  Obj.Refresh
End Sub
 
' Polygones Fenster aus dem Speicher werfen
Sub KillObject(Frm As Object)
  Frm.Visible = False
  Call DeleteObject(hRgn)
End Sub

Anmerkung
Dieser Tipp funktioniert nicht unter Windows 2000.
 

Dieser Tipp wurde bereits 15.639 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel