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