Redéfinit la région de découpage d'un objet Graphics à une région qui est la combinaison d'elle-même et de la région spécifié par un chemin graphique
#include <GDIPlus.au3>
_GDIPlus_GraphicsSetClipPath ( $hGraphics, $hPath [, $iCombineMode = 0] )
$hGraphics | Handle de l'objet Graphics |
$hPath | Handle de l'objet GraphicsPath qui spécifie la région qui sera combinée avec la région de découpage de l'objet graphique |
$iCombineMode | [optionnel] Mode de combinaison des régions: 0 - La région existante est remplacée par la nouvelle région 1 - La région existante est remplacée par l'intersection d'elle-même et de la nouvelle région 2 - La région existante est remplacée par l'union d'elle-même et de la nouvelle région 3 - La région existant est remplacée par le résultat de l'exécution d'un OU exclusif sur les deux régions 4 - La région existante est remplacée par la portion d'elle-même qui est en dehors de la nouvelle région 5 - La région existante est remplacée par la portion de la nouvelle région qui est en dehors de la région existante |
Succès: | Retourne True. |
Échec: | Retourne False et définit @error <> 0, @extended contient le code erreur GPSTATUS ($GPID_ERR*). |
Si la figure du chemin graphique n'est pas fermée, cette méthode traite la figure non fermée comme si elle était fermée par un segment qui relie les points de début et de fin de la figure.
Consultez GdipSetClipPath dans la Librairie MSDN.
#include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <ScreenCapture.au3> #include <WinAPIHObj.au3> Example() Func Example() Local $hBMP = _ScreenCapture_Capture() Local $hGUI = GUICreate("GDI+", 400, 400) GUISetState(@SW_SHOW) _GDIPlus_Startup() Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) ; Crée un objet graphique à partir du handle de la fenêtre Local $hBmp_Buffer = _GDIPlus_BitmapCreateFromGraphics(400, 400, $hGraphics) Local $hGfx_Buffer = _GDIPlus_ImageGetGraphicsContext($hBmp_Buffer) Local $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hBMP) Local $hMatrix1 = _GDIPlus_MatrixCreate() _GDIPlus_MatrixTranslate($hMatrix1, 200, 200) Local $hMatrix2 = _GDIPlus_MatrixCreate() _GDIPlus_MatrixTranslate($hMatrix2, 200, 200) Local $hPath = _GDIPlus_PathCreate() For $i = 0 To 300 Step 24 _GDIPlus_PathAddEllipse($hPath, -$i, -$i, $i * 2, $i * 2) Next Local $hRegion = _GDIPlus_RegionCreate() _GDIPlus_RegionCombinePath($hRegion, $hPath, 4) Local $hTimer = TimerInit() ; Boucle jusqu'à ce que l'utilisateur quitte. Do If TimerDiff($hTimer) > 20 Then _GDIPlus_GraphicsResetClip($hGfx_Buffer) _GDIPlus_GraphicsClear($hGfx_Buffer, 0x33FFAA00) _GDIPlus_MatrixRotate($hMatrix1, 1) _GDIPlus_MatrixRotate($hMatrix2, -1) _GDIPlus_GraphicsSetTransform($hGfx_Buffer, $hMatrix1) _GDIPlus_GraphicsSetClipRegion($hGfx_Buffer, $hRegion) _GDIPlus_GraphicsDrawImage($hGfx_Buffer, $hBitmap, -300, -300) _GDIPlus_GraphicsSetTransform($hGfx_Buffer, $hMatrix2) _GDIPlus_GraphicsSetClipPath($hGfx_Buffer, $hPath) _GDIPlus_GraphicsDrawImage($hGfx_Buffer, $hBitmap, -300, -300) _GDIPlus_GraphicsDrawImage($hGraphics, $hBmp_Buffer, 0, 0) $hTimer = TimerInit() EndIf Until GUIGetMsg() = $GUI_EVENT_CLOSE ; Nettoie les ressources _GDIPlus_RegionDispose($hRegion) _GDIPlus_PathDispose($hPath) _GDIPlus_MatrixDispose($hMatrix1) _GDIPlus_MatrixDispose($hMatrix2) _GDIPlus_BitmapDispose($hBitmap) _WinAPI_DeleteObject($hBMP) _GDIPlus_GraphicsDispose($hGfx_Buffer) _GDIPlus_BitmapDispose($hBmp_Buffer) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() EndFunc ;==>Example