Rubrik: Grafik & Zeichnen | 22.03.05 |
FillRgn-Funktion Diese Funktion füllt eine Region mit einem übergebenen Brush. | ||
Betriebssystem: Win95, Win98, WinNT 3.1, Win2000, WinME | Views: 7.615 |
Deklaration:
Declare Function FillRgn Lib "gdi32.dll" ( _ ByVal hdc As Long, _ ByVal hRgn As Long, _ ByVal hBrush As Long) As Long
Beschreibung:
Diese Funktion füllt eine Region mit einem übergebenen Brush.
Parameter:
hdc | Erwartet den Devicekontext des Gerätes, das die Region besitzt. |
hRgn | Erwartet das Handle der Region, die gefüllt werden soll. |
hBrush | Erwartet das Handle eines Brush's, mit dem der Inhalt der Region gefüllt werden soll. |
Rückgabewert:
Ist die Funktion erfolgreich, so liefert die Funktion einen Wert "ungleich 0", andernfalls wird derWert "0" zurückgegeben.
Beispiel:
Private Declare Function CreateEllipticRgn Lib "gdi32.dll" ( _ ByVal X1 As Long, _ ByVal Y1 As Long, _ ByVal X2 As Long, _ ByVal Y2 As Long) As Long Private Declare Function DeleteObject Lib "gdi32.dll" ( _ ByVal hObject As Long) As Long Private Declare Function CreateRectRgn Lib "gdi32.dll" ( _ ByVal X1 As Long, _ ByVal Y1 As Long, _ ByVal X2 As Long, _ ByVal Y2 As Long) As Long Private Declare Function CombineRgn Lib "gdi32" ( _ ByVal hDestRgn As Long, _ ByVal hSrcRgn1 As Long, _ ByVal hSrcRgn2 As Long, _ ByVal nCombineMode As Long) As Long Private Declare Function FrameRgn Lib "gdi32.dll" ( _ ByVal hdc As Long, _ ByVal hRgn As Long, _ ByVal hBrush As Long, _ ByVal nWidth As Long, _ ByVal nHeight As Long) As Long Private Declare Function CreateHatchBrush Lib "gdi32.dll" ( _ ByVal nIndex As Long, _ ByVal crColor As Long) As Long Private Declare Function FillRgn Lib "gdi32.dll" ( _ ByVal hdc As Long, _ ByVal hRgn As Long, _ ByVal hBrush As Long) As Long Private Declare Function InvertRgn Lib "gdi32.dll" ( _ ByVal hdc As Long, _ ByVal hRgn As Long) As Long ' CombineRgn nCombineMode-Konstanten Private Const RGN_AND = 1 ' Die kombinierte Region soll eine überlappende ' Region der beiden Quellregionen sein Private Const RGN_OR = 2 ' Die kombinierte Region soll der Gesamtbereich der ' beiden Regionen inklusive überlappendem Bereich sein Private Const RGN_XOR = 3 ' Die kombinierte Region soll der Gesamtbereich ' der beiden Regionen exklusive überlappendem Bereich sein Private Const RGN_DIFF = 4 ' Die kombinierte Region soll der Gesamtbereich ' der hSrcRgn1 sein inklusive des Bereiches der Region die von hSrcRgn2 überlappt Private Const RGN_COPY = 5 ' Die kombinierte Region soll der Gesamtbereich ' der hSrcRgn2 sein, inklusive des Bereiches der Region die von hSrcRgn1 überlappt ' CombineRgn Rückgabe-Konstanten Private Const ERROR = 0 ' Ein Fehler ist aufgetreten Private Const NULLREGION = 1 ' Die kombinierte Region ist leer Private Const SIMPLEREGION = 2 ' Die kombinierte Region ist eine rechteckige _ ' (simple) Region Private Const COMPLEXREGION = 3 ' Die kombinierte Region ist eine komplexe Region ' CreateHatchBrush nIndex-Konstanten Private Const HS_BDIAGONAL = 3 Private Const HS_CROSS = 4 Private Const HS_DIAGCROSS = 5 Private Const HS_FDIAGONAL = 2 Private Const HS_HORIZONTAL = 0 Private Const HS_VERTICAL = 1 Private hRgn1 As Long, hRgn2 As Long, hRgn3 As Long Private hBrush As Long
' 2 Regionen kombinieren und invertieren Private Sub Form_Load() Dim Retval As Long ' Autoredraw auf True stellen Me.AutoRedraw = True ' Brush erstellen hBrush = CreateHatchBrush(HS_DIAGCROSS, RGB(0, 255, 0)) ' Elliptische Region erstellen hRgn1 = CreateEllipticRgn(20, 30, 150, 110) ' bounding rectangle (20,30)-(150,110) ' daneben eine rechteckige Region erstellen hRgn2 = CreateRectRgn(150, 30, 200, 110) ' Eine dritte "leere" Region erstellen hRgn3 = CreateRectRgn(0, 0, 0, 0) ' Kombinieren der beiden Regionen (Körper) zu einer Region CombineRgn hRgn3, hRgn1, hRgn2, RGN_XOR ' Kombinierte Region mit dem Brush füllen FillRgn Me.hdc, hRgn3, hBrush ' Invertieren der kombinierten Region InvertRgn Me.hdc, hRgn3 ' Rahmen mit dem Pen um die kombinierte Region zeichnen FrameRgn Me.hdc, hRgn3, hBrush, 5, 10 End Sub
' Ressourcen befreien Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Dim Retval As Long ' Löschen des Brushs DeleteObject hBrush ' Löschen der erstellten Regionen DeleteObject hRgn1 DeleteObject hRgn2 DeleteObject hRgn3 End Sub