Rubrik: Grafik & Zeichnen | 22.03.05 |
![]() Diese Funktion zeichnet einen Kreisausschnitt beginnend von der aktuellen Position und setzt den letzten gezeichneten Punkt als aktuellen Punkt des Devices. | ||
Betriebssystem: WinNT 3.1, WinNT 3.1, Win2000, WinME | Views: 13.217 |
Deklaration:
Declare Function ArcTo Lib "gdi32.dll" ( _ ByVal hdc As Long, _ ByVal nLeftRect As Long, _ ByVal nTopRect As Long, _ ByVal nRightRect As Long, _ ByVal nBottomRect As Long, _ ByVal nXRadial1 As Long, _ ByVal nYRadial1 As Long, _ ByVal nXRadial2 As Long, _ ByVal nYRadial2 As Long) As Long
Beschreibung:
Diese Funktion zeichnet einen Kreisausschnitt beginnend von der aktuellen Position und setzt den letzten gezeichneten Punkt als aktuellen Punkt des Devices.
Parameter:
hdc | Erwartet das Handle des Gerätes, auf dem der Kreisausschnitt gezeichnet werden soll. |
nLeftRect | Erwartet die linke Koordinate des Rechtecks, in dem der Kreisausschnitt gezeichnet werden soll. |
nTopRect | Erwartet die obere Koordinate des Rechtecks, in dem der Kreisausschnitt gezeichnet werden soll. |
nRightRect | Erwartet die rechte Koordinate des Rechtecks, in dem der Kreisausschnitt gezeichnet werden soll. |
nBottomRect | Erwartet die untere Koordinate des Rechtecks, in dem der Kreisausschnitt gezeichnet werden soll. |
nXRadial1 | Erwartet die horizontale Startposition, an der begonnen werden soll, den Kreisausschnitt in dem Rechteck zu zeichnen. |
nYRadial1 | Erwartet die vertikale Startposition, an der begonnen werden soll, den Kreisausschnitt in dem Rechteck zu zeichnen. |
nXRadial2 | Erwartet die horizontale Endposition, biszu der der Kreisausschnitt in dem Rechteck gezeichnet werden soll. |
nYRadial2 | Erwartet die vertikale Endposition, biszu der der Kreisausschnitt in dem Rechteck gezeichnet werden soll. |
Rückgabewert:
Ist die Funktion erfolgreich so wird ein Wert "ungleich 0" zurückgegeben, andernfalls wird derWert "0" zurückgegeben. Für erweiterte Fehlerinformationen rufen Sie die GetLastError-Funktion auf.
Beispiel:
Private Declare Function AngleArc Lib "gdi32.dll" ( _ ByVal hdc As Long, _ ByVal x As Long, _ ByVal y As Long, _ ByVal dwRadius As Long, _ ByVal eStartAngle As Single, _ ByVal eSweepAngle As Single) As Long Private Declare Function GetArcDirection Lib "gdi32" (ByVal hdc As Long) As Long Private Declare Function SetArcDirection Lib "gdi32" ( _ ByVal hdc As Long, _ ByVal ArcDirection As Long) As Long Private Declare Function ArcTo Lib "gdi32.dll" ( _ ByVal hdc As Long, _ ByVal nLeftRect As Long, _ ByVal nTopRect As Long, _ ByVal nRightRect As Long, _ ByVal nBottomRect As Long, _ ByVal nXRadial1 As Long, _ ByVal nYRadial1 As Long, _ ByVal nXRadial2 As Long, _ ByVal nYRadial2 As Long) As Long Private Declare Function MoveToEx Lib "gdi32.dll" ( _ ByVal hdc As Long, _ ByVal x As Long, _ ByVal y As Long, _ lpPoint As POITAPI) As Long Private Type POITAPI x As Long y As Long End Type ' Get- / SetArcDirection Rückgabe-/ArcDirection-Konstanten Private Const AD_CLOCKWISE = 2 ' mit dem Uhrzeigersinn Private Const AD_COUNTERCLOCKWISE = 1 ' gegen den Uhrzeigersinn
' eine Brücke zeichnen Private Sub Form_Load() Dim Retval As Long, PT As POITAPI ' Richtung des Zeichnens setzen If GetArcDirection(Me.hdc) = AD_CLOCKWISE Then Retval = SetArcDirection(Me.hdc, AD_COUNTERCLOCKWISE) End If With Me .AutoRedraw = True .ScaleMode = vbPixels ' Startpunkt definieren (rechte Fenstermitte) Call MoveToEx(Me.hdc, .ScaleWidth - 20, .ScaleHeight / 2, PT) ' ersten Bogen malen (oben) Retval = AngleArc(.hdc, ScaleWidth / 2, .ScaleHeight / 2, _ .ScaleHeight / 2 - 20, 0, 180) ' Richtung zum Zeichnen des Bogens ändern Retval = SetArcDirection(Me.hdc, AD_CLOCKWISE) ' zweiten Bogen zeichnen (unten) Retval = ArcTo(.hdc, 20, 0, .ScaleWidth - 20, .ScaleHeight, 0, _ .ScaleHeight / 2, .ScaleWidth, .ScaleHeight / 2) End With End Sub