vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Grafik & Zeichnen13.09.01
CreateHatchBrush-Funktion

Diese Funktion erstellt einen Pinsel (Brush) (ein 8x8 Pixel großes Bitmap) in der vorgegebenen Farbe Schraffurmuster.

Betriebssystem:  Win95, Win98, WinNT 3.1, Win2000, WinMEViews:  8.707 

Deklaration:

Declare Function CreateHatchBrush Lib "gdi32.dll" ( _
  ByVal nIndex As Long, _
  ByVal crColor As Long) As Long

Beschreibung:
Diese Funktion erstellt einen Pinsel (Brush) (ein 8x8 Pixel großes Bitmap) in der vorgegebenen Farbe Schraffurmuster. Diesen Pinsel kann man dann einem Fenster oder ähnlichem Objekt zuwiesen, um den Hintergrund damit auszufüllen.

Parameter:
nIndexErwartete eine "nIndex"-Konstante, die das Füllmuster des Pinsels beschreibt.
crColorErwartet einen RGB-Farbwert, der die Farbe des Füllmusters festlegt.

nIndex Konstanten:

' Diagonal von linksunten nach rechtsoben (/)
Const HS_BDIAGONAL = 3
 
' Kreuz (+)
Const HS_CROSS = 4
 
' Diagonales Kreuz (x)
Const HS_DIAGCROSS = 5
 
' Diagonal von rechtunten nach linksoben (\)
Const HS_FDIAGONAL = 2
 
' Horizontal (-)
Const HS_HORIZONTAL = 0
 
' Vertikal (|)
Const HS_VERTICAL = 1

Rückgabewert:
Ist die Funktion erfolgreich, so liefert sie einen Handle zu dem neu erstelltem Brush, andernfalls ist die Rückgabe "0".


Beispiel:

Private Declare Function CreateHatchBrush Lib "gdi32" ( _
  ByVal nIndex As Long, _
  ByVal crColor As Long) As Long
 
Private Declare Function GetBrushOrgEx Lib "gdi32" ( _
  ByVal hDC As Long, _
  lpPoint As POINTAPI) As Long
 
Private Declare Function SetBrushOrgEx Lib "gdi32" ( _
  ByVal hDC As Long, _
  ByVal nXOrg As Long, _
  ByVal nYOrg As Long, _
  lppt As POINTAPI) As Long
 
Private Declare Function SelectObject Lib "gdi32" ( _
  ByVal hDC As Long, _
  ByVal hObject As Long) As Long
 
Private Declare Function Rectangle Lib "gdi32" ( _
  ByVal hDC As Long, _
  ByVal X1 As Long, _
  ByVal Y1 As Long, _
  ByVal X2 As Long, _
  ByVal Y2 As Long) As Long
 
Private Declare Function DeleteObject Lib "gdi32" ( _
  ByVal hObject As Long) As Long
 
' Diagonal von linksunten nach rechtsoben (/)
Private Const HS_BDIAGONAL = 3
 
' Kreuz (+)
Private Const HS_CROSS = 4
 
' Diagonales Kreuz (x)
Private Const HS_DIAGCROSS = 5
 
' Diagonal von rechtunten nach linksoben (\)
Private Const HS_FDIAGONAL = 2
 
' Horizontal (-)
Private Const HS_HORIZONTAL = 0
 
' Vertikal (|)
Private Const HS_VERTICAL = 1
 
Private Type POINTAPI
  x As Long
  y As Long
End Type
 
Private RetVal As Long, hBrushNew As Long, hBrushOld As Long
Private OldOrginPt As POINTAPI, NewOrginPt As POINTAPI
' Lädt die neuen Brush-Eigenschaften und speichert die alten
' in Variable.
' Die AutoReDraw-Eigenschaft muss False sein!!!
Private Sub Form_Load()
  Me.ScaleMode = vbPixels
 
  ' Ersteinmal fragen wir den aktuellen "Orgin-Punkt" ab,
  ' den wir am Ende wiederherstellen müssen
  RetVal = GetBrushOrgEx(Me.hDC, OldOrginPt)
 
  ' Danach setzen wir den neuen "Orign-Punkt"
  With NewOrginPt
    .x = 4
    .y = 4
    RetVal = SetBrushOrgEx(Me.hDC, .x, .y, NewOrginPt)
  End With
 
  ' Dann erstellen wir uns einen neuen Brush in Blau
  hBrushNew = CreateHatchBrush(HS_DIAGCROSS, vbBlue)
 
  ' Nun weisen wir den neuen Brush dem Fernster zu
  ' und erhalten dabei den "Alten"
  hBrushOld = SelectObject(Me.hDC, hBrushNew)
End Sub
' Zeichnet den neuen Brush innerhalb eines Rechteckes
Private Sub Form_Paint()
  ' Forminhalt löschen
  Me.Cls
 
  ' Weil beim Maximieren und Minimieren die From den alten
  ' Brush immer wiederherstellt, müssen wir ihn jedesmal
  ' erneut zuweisen, um sicher zu stellen, dass der
  ' gewünschte Brush auch das Rechteck ausfüllt
  SelectObject Me.hDC, hBrushNew
 
  ' Nun zeichnen wir ein Rechteck in der Mitte der Form
  RetVal = Rectangle(Me.hDC, Me.ScaleWidth / 3, _
    Me.ScaleHeight / 3, _
  Me.ScaleWidth / 3 * 2, Me.ScaleHeight / 3 * 2)
End Sub
' Erzwingt, dass beim Maximieren das Form_Paint Ereignis
' ausgelöst wird
Private Sub Form_Resize()
  If Me.WindowState = vbMaximized Then
    Me.Refresh
  End If
End Sub
' Stellt den Orginalbrush wieder her
Private Sub Form_QueryUnload(Cancel As Integer, _
  UnloadMode As Integer)
 
  ' Hier stellen wir den alten Brush und dessen
  ' "Orginpunkt" wieder her
  DeleteObject SelectObject(Me.hDC, hBrushOld)
 
  With OldOrginPt
    RetVal = SetBrushOrgEx(Me.hDC, .x, .y, OldOrginPt)
  End With
End Sub

Diese Seite wurde bereits 8.707 mal aufgerufen.

nach obenzurück
 
   

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