Dessine un arc d'ellipse
#include <WinAPIGdi.au3>
_WinAPI_Arc ( $hDC, $tRECT, $iXStartArc, $iYStartArc, $iXEndArc, $iYEndArc )
$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. |
Succès: | Retourne True |
Échec: | Retourne False |
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.
_WinAPI_GetArcDirection, _WinAPI_SetArcDirection
Consultez Arc dans la librairie MSDN.
; 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