UDF > GDIPlus > Region >


_GDIPlus_RegionCreate

Crée une région (Region) avec un intérieur infini

#include <GDIPlus.au3>
_GDIPlus_RegionCreate ( )

Valeur de retour

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

Remarques

Un objet Region décrit l'intérieur d'une forme graphique composée de rectangles et de tracés.
Lorsque vous en avez terminé avec l'objet, appelez _GDIPlus_RegionDispose() pour libérer les ressources de l'objet.

En relation

_GDIPlus_RegionDispose

Voir aussi

Consultez GdipCreateRegion dans la Librairie MSDN.

Exemple

#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