Stört Sie das eintönige Standard-Windows, was die eckige Darstellung der Fenster betrifft? Dann ändern Sie doch einfach die Fenster-Form anhand eines unregelmäßig geformten Bitmaps.
' zunächst die benötigten Deklarationen Public Declare Function GetPixel Lib "gdi32" ( _ ByVal hDC As Long, _ ByVal lngX As Long, _ ByVal lngY As Long) As Long Public Declare Function SetWindowRgn Lib "user32" ( _ ByVal hWnd As Long, _ ByVal hRgn As Long, _ ByVal bRedraw As Boolean) As Long Public Declare Function CreateRectRgn Lib "gdi32" ( _ ByVal X1 As Long, _ ByVal Y1 As Long, _ ByVal X2 As Long, _ ByVal Y2 As Long) As Long Public Declare Function CombineRgn Lib "gdi32" ( _ ByVal hDestRgn As Long, _ ByVal hSrcRgn1 As Long, _ ByVal hSrcRgn2 As Long, _ ByVal nCombineMode As Long) As Long Public Declare Function SendMessage Lib "user32" _ Alias "SendMessageA" ( _ ByVal hWnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ lParam As Any) As Long Public Declare Function ReleaseCapture Lib "user32" () As Long Public Declare Function DeleteObject Lib "gdi32" ( _ ByVal hObject As Long) As Long Public Const RGN_OR = 2 Public Const WM_NCLBUTTONDOWN = &HA1 Public Const HTCAPTION = 2 Public Function BereichHerstellen(objBild As PictureBox) _ As Long Dim lngTransparenteFarbe As Long Dim bolErsterBereich As Boolean Dim bolEingangsLinie As Boolean Dim hDC As Long Dim lngBildWeite As Long Dim lngBildHoehe As Long Dim lngX As Long Dim lngY As Long Dim lngStartLinie_X As Long Dim lngGesamtBereich As Long Dim lngLinienBereich As Long hDC = objBild.hDC lngBildWeite = objBild.ScaleWidth lngBildHoehe = objBild.ScaleHeight bolErsterBereich = True: bolEingangsLinie = False lngX = lngY = lngStartLinie_X = 0 ' Die transparente Farbe ist die Farbe die sich in der ' PictureBox oben Links befindet... lngTransparenteFarbe = GetPixel(hDC, 0, 0) For lngY = 0 To lngBildHoehe - 1 For lngX = 0 To lngBildWeite - 1 If GetPixel(hDC, lngX, lngY) = lngTransparenteFarbe Or _ lngX = lngBildWeite Then If bolEingangsLinie Then bolEingangsLinie = False lngLinienBereich = CreateRectRgn(lngStartLinie_X, _ lngY, lngX, lngY + 1) If bolErsterBereich Then lngGesamtBereich = lngLinienBereich bolErsterBereich = False Else CombineRgn lngGesamtBereich, lngGesamtBereich, _ lngLinienBereich, RGN_OR DeleteObject lngLinienBereich End If End If Else If Not bolEingangsLinie Then bolEingangsLinie = True lngStartLinie_X = lngX End If End If Next Next BereichHerstellen = lngGesamtBereich End Function Hier ein Beispiel für den Funktionsaufruf: Private Sub Form_Load() Dim FensterBereich As Long Set Picture1.Picture = LoadPicture(App.Path & "\test.bmp") Me.Width = Picture1.Width Me.Height = Picture1.Height FensterBereich = BereichHerstellen(Picture1) SetWindowRgn Me.hWnd, FensterBereich, True End Sub Dieser Tipp wurde bereits 17.456 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
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. |
sevWizard für VB5/6 Professionelle Assistenten im Handumdrehen Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||||
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. |