UDF > WinAPIEx > GDI > Line & Curve >


_WinAPI_ArcTo

Dessine un arc d'ellipse et met à jour le point courant

#include <WinAPIGdi.au3>
_WinAPI_ArcTo ( $hDC, $tRECT, $iXRadial1, $iYRadial1, $iXRadial2, $iYRadial2 )

Paramètres

$hDC Handle du contexte de périphérique.
$tRECT Structure $tagRECT qui contient les coordonnées logiques du rectangle englobant.
$iXRadial1 La coordonnée x, en unités logiques, de l'extrémité du rayon définissant le point de départ de l'arc.
$iYRadial1 La coordonnée y, en unités logiques, de l'extrémité du rayon définissant le point de départ de l'arc.
$iXRadial2 La coordonnée x, en unités logiques, de l'extrémité du rayon définissant le point terminal de l'arc.
$iYRadial2 La coordonnée y, en unités logiques, de l'extrémité de la radiale définissant le point terminal de l'arc.

Valeur de retour

Succès: Retourne True
Échec: Retourne False

Remarque

L'arc est dessiné en utilisant le stylo courant; il n'est pas rempli. _WinAPI_ArcTo() est similaire à la fonction _WinAPI_Arc(), excepté que la position courante est mise à jour.

En relation

_WinAPI_Arc

Voir aussi

Consultez ArcTo dans la librairie MSDN.

Exemple

#include <APIGdiConstants.au3>
#include <GUIConstantsEx.au3>
#include <SendMessage.au3>
#include <StaticConstants.au3>
#include <WinAPIGdi.au3>
#include <WinAPIGdiDC.au3>
#include <WinAPIHObj.au3>
#include <WinAPIMisc.au3>
#include <WinAPISysWin.au3>
#include <WindowsConstants.au3>

; 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)

; Crée un chemin graphique
_WinAPI_BeginPath($hMemDC)
_WinAPI_MoveTo($hMemDC, 220, 78)
_WinAPI_LineTo($hMemDC, 170, 218)
_WinAPI_LineTo($hMemDC, 70, 218)
_WinAPI_LineTo($hMemDC, 20, 78)
_WinAPI_SetArcDirection($hMemDC, $AD_CLOCKWISE)
_WinAPI_ArcTo($hMemDC, _WinAPI_CreateRectEx(49, 22, 143, 143), 49, 78, 192, 78)
_WinAPI_CloseFigure($hMemDC)
_WinAPI_Ellipse($hMemDC, _WinAPI_CreateRectEx(70, 44, 101, 101))
_WinAPI_Ellipse($hMemDC, _WinAPI_CreateRectEx(90, 64, 61, 61))
_WinAPI_EndPath($hMemDC)

; Trace et remplit l'intérieur du chemin graphique
Local $hBrush = _WinAPI_SelectObject($hMemDC, _WinAPI_GetStockObject($DC_BRUSH))
Local $hPen = _WinAPI_SelectObject($hMemDC, _WinAPI_GetStockObject($DC_PEN))
_WinAPI_SetDCBrushColor($hMemDC, 0xFFC000)
_WinAPI_SetDCPenColor($hMemDC, 0xDD0000)
_WinAPI_StrokeAndFillPath($hMemDC)

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

; Définit le bitmap dans le contrôle Picture
_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