Modifie une région (Region) avec la partie d'elle-même qui coupe une autre région
#include <GDIPlus.au3>
_GDIPlus_RegionCombineRegion ( $hRegionDst, $hRegionSrc [, $iCombineMode = 2] )
$hRegionDst | Handle de l'objet Region destination |
$hRegionSrc | Handle de l'objet Region source à utiliser pour modifier l'objet Region destination $hRegionDst |
$iCombineMode | [optionnel] Mode de combinaison qui spécifie comment la région est combinée avec le tracé: 0 - Replace: la région existante est remplacée par la nouvelle région 1 - Intersect: La région existante est remplacée par l'intersection d'elle-même et la nouvelle région 2 - Union: la région existante est remplacée par la réunion d'elle-même et de la nouvelle région 3 - Xor: la région existante est remplacée par le résultat de l'exécution d'un OU exclusif sur les deux régions. Un point est dans le OU exclusif de deux régions si il est dans une région ou l'autre mais pas dans les deux régions. 4 - Exclude: La région existante est remplacée par la portion d'elle-même qui est en dehors de la nouvelle région 5 - Complement: La région existante est remplacée par la nouvelle portion de la 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*). |
_GDIPlus_RegionCombinePath, _GDIPlus_RegionCombineRect
Consultez GdipCombineRegionRegion dans la Librairie MSDN.
#include <GDIPlus.au3> #include <GUIConstantsEx.au3> Example() Func Example() Local $hGUI, $hGraphic, $hBrush, $hRegion, $hRegion1, $hRegion2, $hPath ; Crée une GUI $hGUI = GUICreate("GDI+", 600, 480) GUISetState(@SW_SHOW) _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ; Crée un objet graphique à partir du handle de la fenêtre _GDIPlus_GraphicsClear($hGraphic, 0xFFFFFFFF) $hBrush = _GDIPlus_BrushCreateSolid(0x7F8800AA) $hPath = _GDIPlus_PathCreate() ; Crée un objet path _GDIPlus_PathAddEllipse($hPath, 80, 60, 80, 60) $hRegion1 = _GDIPlus_RegionCreateFromRect(30, 80, 80, 60) $hRegion2 = _GDIPlus_RegionCreateFromPath($hPath) _GDIPlus_GraphicsDrawString($hGraphic, "2 regions", 50, 30) _GDIPlus_GraphicsFillRegion($hGraphic, $hRegion1, $hBrush) _GDIPlus_GraphicsFillRegion($hGraphic, $hRegion2, $hBrush) _GDIPlus_GraphicsDrawString($hGraphic, "intersection", 50, 180) _GDIPlus_RegionTranslate($hRegion1, 0, 150) _GDIPlus_RegionTranslate($hRegion2, 0, 150) $hRegion = _GDIPlus_RegionClone($hRegion1) _GDIPlus_RegionCombineRegion($hRegion, $hRegion2, 1) ; Intersection _GDIPlus_GraphicsFillRegion($hGraphic, $hRegion, $hBrush) _GDIPlus_RegionDispose($hRegion) _GDIPlus_GraphicsDrawString($hGraphic, "union", 250, 180) _GDIPlus_RegionTranslate($hRegion1, 200, 0) _GDIPlus_RegionTranslate($hRegion2, 200, 0) $hRegion = _GDIPlus_RegionClone($hRegion1) _GDIPlus_RegionCombineRegion($hRegion, $hRegion2, 2) ; Union _GDIPlus_GraphicsFillRegion($hGraphic, $hRegion, $hBrush) _GDIPlus_RegionDispose($hRegion) _GDIPlus_GraphicsDrawString($hGraphic, "xor", 450, 180) _GDIPlus_RegionTranslate($hRegion1, 200, 0) _GDIPlus_RegionTranslate($hRegion2, 200, 0) $hRegion = _GDIPlus_RegionClone($hRegion1) _GDIPlus_RegionCombineRegion($hRegion, $hRegion2, 3) ; Xor _GDIPlus_GraphicsFillRegion($hGraphic, $hRegion, $hBrush) _GDIPlus_RegionDispose($hRegion) _GDIPlus_GraphicsDrawString($hGraphic, "region1 sub region2", 50, 330) _GDIPlus_RegionTranslate($hRegion1, -400, 150) _GDIPlus_RegionTranslate($hRegion2, -400, 150) $hRegion = _GDIPlus_RegionClone($hRegion1) _GDIPlus_RegionCombineRegion($hRegion, $hRegion2, 4) ; 1 moins 2 _GDIPlus_GraphicsFillRegion($hGraphic, $hRegion, $hBrush) _GDIPlus_RegionDispose($hRegion) _GDIPlus_GraphicsDrawString($hGraphic, "region2 sub region1", 250, 330) _GDIPlus_RegionTranslate($hRegion1, 200, 0) _GDIPlus_RegionTranslate($hRegion2, 200, 0) $hRegion = _GDIPlus_RegionClone($hRegion1) _GDIPlus_RegionCombineRegion($hRegion, $hRegion2, 5) ; 2 moins 1 _GDIPlus_GraphicsFillRegion($hGraphic, $hRegion, $hBrush) _GDIPlus_RegionDispose($hRegion) ; Boucle jusqu'à ce que l'utilisateur quitte. Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ; Nettoie les ressources _GDIPlus_PathDispose($hPath) _GDIPlus_RegionDispose($hRegion1) _GDIPlus_RegionDispose($hRegion2) _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() EndFunc ;==>Example