UDF > GDIPlus > Region >


_GDIPlus_RegionCombineRegion

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

Paramètres

$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

Valeur de retour

Succès: Retourne True.
Échec: Retourne False et définit @error <> 0, @extended contient le code erreur GPSTATUS ($GPID_ERR*).

En relation

_GDIPlus_RegionCombinePath, _GDIPlus_RegionCombineRect

Voir aussi

Consultez GdipCombineRegionRegion dans la Librairie MSDN.

Exemple

#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