Rubrik: Grafik & Zeichnen | 15.04.02 |
RoundRect-Funktion Diese Funktion zeichnet ein abgerundetes Rechteck auf ein Device. | ||
Betriebssystem: Win95, Win98, WinNT 3.1, Win2000, WinME | Views: 9.139 |
Deklaration:
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
Beschreibung:
Diese Funktion zeichnet ein abgerundetes Rechteck auf ein Device.
Parameter:
hdc | Erwartet den Device-Kontext eines Gerätes. |
nLeftRect | Erwartet die linke Koordinate des Rechtecks. |
nTopRect | Erwartet die obere Koordinate des Rechtecks. |
nRightRect | Erwartet die rechte Koordinate des Rechtecks. |
nBottomRect | Erwartet die untere Koordinate des Rechtecks. |
nWidth | Erwartet die Weite der Rundungen des Rechtecks. |
nHeight | Erwartet die Höhe der Rundungen des Rechtecks. |
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 Fehlerinformationenanhand 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 Zonst FLOODFILLSURFACE = 1 ' überschreibt die Farbe "crColor" mit dem ' aktuell gewählten Brush
' Form.AutoRedraw 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 Original-Brush wiederherstellen RetVal = SelectObject(Me.hdc, hOldBrush) ' den angelegten Brush zerstören DeleteObject hBrush End Sub