Rubrik: Grafik & Zeichnen | 22.03.05 |
GetArcDirection-Funktion Diese Funktion ermittelt, ob Kreisausschnitte auf einem bestimmten Device gegen oder mit dem Uhrzeigersinn gezeichnet werden. | ||
Betriebssystem: Win95, Win98, WinNT 3.1, Win2000, WinME | Views: 7.346 |
Deklaration:
Declare Function GetArcDirection Lib "gdi32.dll" (ByVal hdc As Long) As Long
Beschreibung:
Diese Funktion ermittelt, ob Kreisausschnitte auf einem bestimmten Device gegen oder mit dem Uhrzeigersinn gezeichnet werden.
Parameter:
hdc | Erwartet den Devicekontext des Gerätes von dem die Richtung des Zeichnens für Kreisausschnitte ermittelt werden soll. |
Rückgabewert:
Ist die Funktion erfolgreich, so wird eine der Rückgabe-Konstanten zurückgegeben, andernfalls derWert "0".
Rückgabekonstanten:
Const AD_CLOCKWISE = 2 ' mit den Uhrzeigersinn Const AD_COUNTERCLOCKWISE = 1 ' gegen den Uhrzeigersinn
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 den 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