Rubrik: Grafik & Zeichnen | 15.03.02 |
ExtFloodFill-Funktion Diese Funktion füllt einen begrenzten Bereich mit dem Brush des Devices aus. | ||
Betriebssystem: Win95, Win98, WinNT 3.1, Win2000, WinME | Views: 9.543 |
Deklaration:
Declare Function ExtFloodFill Lib "gdi32.dll" ( _ ByVal hdc As Long, _ ByValnXStart As Long, _ ByVal nYStart As Long, _ ByVal crColor As Long, _ ByVal fuFillType As Long) As Long
Beschreibung:
Diese Funktion füllt einen begrenzten Bereich mit dem Brush des Devices aus.
Parameter:
hdc | Erwartet den Device-Kontext des Gerätes, das mit der Farbe gefüllt werden soll. |
nXStart | Erwartet die horizontale Koordinate ander das Füllen der Farbe beginnen soll. Das Füllen der Farbe geschieht in alle Richtungen. |
nYStart | Erwartet die vertikale Koordinate ander das Füllen der Farbe beginnen soll. Das Füllen der Farbe geschieht in alle Richtungen. |
crColor | Erwartet eine RGB-Farbedie die Farbe festlegt, mit der gefüllt werden soll. |
fuFillType | Erwartet eine fFillType-Konstante die beschreibt, welcheBereiche des Gerätes gefüllt werden sollen. |
fuFillType Konstanten:
Const FLOODFILLBORDER = 0 ' Füllt von der angegebenen Position bis zu der angegebenen Farbe "crColor" mit dem aktuell ' gewählten Brush. Diese Methode füllt keine Bereiche, die mit "crColor" umschlossen sind. Const FLOODFILLSURFACE = 1 ' Überschreibt die Farbe "crColor" mit dem aktuell gewählten Brush
Rückgabewert:
Ist die Funktion erfolgreich, so ist die Rückgabe "ungleich 0", andernfalls wird derWert "0" zurückgegeben. Unter Windows 2000/NT können erweiterte Fehlerinformationen mittels der GetLastError-Funktion ermittelt werden.
Beispiel:
Private Declare Function CreateSolidBrush Lib "gdi32.dll" ( _ ByVal crColor As Long) As Long Private Declare Function DeleteObject Lib "gdi32.dll" (ByVal hObject As Long) As Long Private Declare Function ExtFloodFill Lib "gdi32.dll" ( _ ByVal hdc As Long, _ ByVal nXStart As Long, _ ByVal nYStart As Long, _ ByVal crColor As Long, _ ByVal fuFillType As Long) As Long Private Declare Function SelectObject Lib "gdi32.dll" ( _ ByVal hdc As Long, _ ByVal hObject As Long) As Long Private Declare Function RoundRect Lib "gdi32.dll" ( _ ByVal hdc As Long, _ ByVal nLeftRect As Long, _ ByVal nTopRect As Long, _ ByVal nRightRect As Long, _ ByVal nBottomRect As Long, _ ByVal nWidth As Long, _ ByVal nHeight As Long) As Long Private Const FLOODFILLBORDER = 0 ' Füllt von der angegebenen Position bis zu der ' angegebenen Farbe "crColor" mit dem aktuell gewählten Brush. Diese Methode füllt ' keine Bereiche, die mit "crColor" umschlossen sind. Private Const FLOODFILLSURFACE = 1 ' Überschreibt die Farbe "crColor" mit dem ' aktuell gewähltem Brush
' Form.AutoredDraw sollte True sein, damit der Fensterinhalt besser angezeigt wird. Private Sub Form_Resize() Dim RetVal As Long, hBrush As Long, hOldBrush As Long, RndCol As Long On Error Resume Next ' Bei einem Minimieren-Ereignis tritt sonst ein Fehler auf ' Inhalt der Form löschen Me.Cls ' Rechteck auf der Form zeichnen RetVal = RoundRect(Me.hdc, Me.ScaleWidth / 3, Me.ScaleHeight / 3, _ Me.ScaleWidth / 3 * 2, Me.ScaleHeight / 3 * 2, 20, 20) ' Brush mit zufälliger Farbe erstellen Randomize Timer ' Zufallszahlen neu berechnen RndCol = RGB(CInt(Rnd() * 255 + 1), CInt(Rnd() * 255 + 1), CInt(Rnd() * 255 + 1)) hBrush = CreateSolidBrush(RndCol) ' Brush zuweisen und alten Brush zwischenspeichern hOldBrush = SelectObject(Me.hdc, hBrush) ' den inneren Bereich des Rechtecks mit dem Brush der Form füllen RetVal = ExtFloodFill(Me.hdc, Me.ScaleWidth / 2, Me.ScaleHeight / 2, vbBlack, FLOODFILLBORDER) ' den Orginal-Brush wiederherstellen RetVal = SelectObject(Me.hdc, hOldBrush) ' den angelegten Brush zerstören DeleteObject hBrush End Sub