Rubrik: Grafik & Zeichnen | 22.03.05 |
AngleArc-Funktion Diese Funktion zeichnet einen Kreisausschnitt beginnend von der aktuellen Position mit der angegebenen Gradzahl. | ||
Betriebssystem: WinNT 3.1, WinNT 3.1, Win2000, WinME | Views: 14.848 |
Deklaration:
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
Beschreibung:
Diese Funktion zeichnet einen Kreisausschnitt beginnend von der aktuellen Position mit der angegebenen Gradzahl.
Parameter:
hdc | Erwartet den Devicekontext des Gerätes, auf dem der Kreisausschnitt gezeichnet werden soll. |
x | Erwartet die horizontale Koordinate, auf dem der Kreisausschnitt zentriert werden soll. |
y | Erwartet die vertikale Koordinate, auf dem der Kreisausschnitt zentriert werden soll. |
dwRadius | Erwartet den Radius desKreisausschnitts. |
eStartAngle | Erwartet die Gradzahl, bei der begonnen werden soll den Kreisausschnitt zu zeichnen. |
eSweepAngle | Erwartet dieGradzahl, wie der Kreisausschnitt gezeichnet werden soll. |
Rückgabewert:
Ist die Funktion erfolgreich so wird ein Wert "ungleich 0" zurückgegeben, andernfalls wird derWert "0" zurückgegeben. Fürerweiterte 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