UDF > WinAPIEx > GDI > Line & Curve >


_WinAPI_Arc

Dessine un arc d'ellipse

#include <WinAPIGdi.au3>
_WinAPI_Arc ( $hDC, $tRECT, $iXStartArc, $iYStartArc, $iXEndArc, $iYEndArc )

Paramètres

$hDC Handle du contexte de périphérique.
$tRECT Structure $tagRECT qui contient les coordonnées logiques du rectangle de délimitation.
$iXStartArc La coordonnée x, en unités logiques, de l'extrémité d'un rayon quelconque issu du centre du rectangle et définissant le point de départ de l'arc.
$iYStartArc La coordonnée y, en unités logiques, de l'extrémité d'un rayon définissant le point de départ de l'arc.
$iXEndArc La coordonnée x, en unités logiques, de l'extrémité d'un rayon définissant le point terminal de l'arc.
$iYEndArc La coordonnée y, en unités logiques, de l'extrémité d'un rayon définissant le point terminal de l'arc.

Valeur de retour

Succès: Retourne True
Échec: Retourne False

Remarques

L'arc est dessiné en utilisant le stylo courant; il n'est pas rempli. La position actuelle n'est ni utilisé ni mis à jour par la fonction _WinAPI_Arc().

Utilisez les fonctions _WinAPI_GetArcDirection() et _WinAPI_SetArcDirection() pour obtenir et définir la direction courante du dessin pour un contexte de périphérique.
La direction de l'arc par défaut est le sens antihoraire.

En relation

_WinAPI_GetArcDirection, _WinAPI_SetArcDirection

Voir aussi

Consultez Arc dans la librairie MSDN.

Exemple

; Cet exemple a disparu de la version V3.3.14.3

#include <APIGdiConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WinAPIGdi.au3>
#include <WindowsConstants.au3>
#include <WinAPISysWin.au3>

Example()

func Example()
    ; Crée une GUI
    Local $hForm = GUICreate('Test ' & StringReplace(@ScriptName, '.au3', '()'), 241, 241)
    Local $idPic = GUICtrlCreatePic('', 0, 0, 241, 241)
    Local $hPic = GUICtrlGetHandle($idPic)

    ; Crée un bitmap
    Local $hDC = _WinAPI_GetDC($hPic)
    Local $hMemDC = _WinAPI_CreateCompatibleDC($hDC)
    Local $hBitmap = _WinAPI_CreateCompatibleBitmapEx($hDC, 241, 241, _WinAPI_SwitchColor(_WinAPI_GetSysColor($COLOR_3DFACE)))
    Local $hMemSv = _WinAPI_SelectObject($hMemDC, $hBitmap)

    ; Dessine un rectangle
    Local $tRect
    $tRect = _WinAPI_CreateRectEx(49, 22, 143, 173)
    _WinAPI_Rectangle($hMemDC, $tRect)

    ; L'arc d'ellipse est alors défini par deux points M et N
    Local $xM = 90, $yM = 50, $xN = 90, $yN = 230
    _WinAPI_SetArcDirection($hMemDC, $AD_CLOCKWISE)  ; essayez aussi $AD_COUNTERCLOCKWISE
    _WinAPI_Arc($hMemDC, $tRect, $xM, $yM, $xN, $yN)

    ; Centre du rectangle
    Local $xC = 49 + 143 / 2, $yC = 22 + 173 / 2

    ; Segments CM et CN
    _WinAPI_MoveTo($hMemDC, $xC, $yC)
    _WinAPI_LineTo($hMemDC, $xM, $yM)
    _WinAPI_MoveTo($hMemDC, $xC, $yC)
    _WinAPI_LineTo($hMemDC, $xN, $yN)

    ; Etiquettes des points M et N passés en paramètres à la fonction _WinAPI_Arc
    _WinAPI_TextOut($hMemDC, $xM - 15, $yM - 5, 'M')
    _WinAPI_TextOut($hMemDC, $xN - 15, $yN - 5, 'N')

    ; Libère les objets
    _WinAPI_ReleaseDC($hPic, $hDC)
    _WinAPI_SelectObject($hMemDC, $hMemSv)
    _WinAPI_DeleteDC($hMemDC)

    ; Définit le bitmap dans le contrôle
    _SendMessage($hPic, $STM_SETIMAGE, 0, $hBitmap)
    Local $hObj = _SendMessage($hPic, $STM_GETIMAGE)
    If $hObj <> $hBitmap Then
        _WinAPI_DeleteObject($hBitmap)
    EndIf

    GUISetState(@SW_SHOW)

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc   ;==>Example