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 9.915 mal aufgerufen.
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv (einschl. Beispielprojekt!) Ein absolutes Muss - Mehr als 650 MByte geballtes Wissen! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - Online-Update-Funktion u.v.m. |
Neu! sevISDN 1.0 ![]() Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Buchempfehlung Tipp des Monats Arne Elster Stop Button der IDE abfangen End-Anweisung und Stop-Button beim Ausführen dre Anwendung innerhalb der IDE abfangen, um Subclassing u.ä. rechtzeitig abzubrechen sevGraph (VB/VBA) ![]() Grafische Auswertungen Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! |
||||||||||||||||||
|
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. |
|||||||||||||||||||


Unregelmaessige Formen auf Basis einer Bitmap




