UDF > GDIPlus > TextureBrush >


_GDIPlus_TextureCreateIA

Cr�e un objet TextureBrush � partir d'une image, d'une d�finition de rectangle, et d'un ensemble de propri�t�s de l'image

#include <GDIPlus.au3>
_GDIPlus_TextureCreateIA ( $hImage, $nX, $nY, $nWidth, $nHeight [, $pImageAttributes = 0] )

Param�tres

$hImage Handle de l'objet Image
$nX Coordonn�e X la plus � gauche de la partie d'image qui doit �tre utilis�e par ce pinceau
$nY Coordonn�e Y la plus haute de la partie d'image qui doit �tre utilis�e par ce pinceau
$nWidth Largeur du pinceau et largeur de la partie d'image qui doit �tre utilis�e par ce pinceau
$nHeight Hauteur du pinceau et hauteur de la partie d'image qui doit �tre utilis�e par ce pinceau
$pImageAttributes [optionnel] Handle de l'objet ImageAttributes qui contient des propri�t�s de l'image

Valeur de retour

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

Remarque

Lorsque vous en avez termin� avec l'objet, appelez _GDIPlus_BrushDispose() pour lib�rer les ressources de l'objet.

En relation

_GDIPlus_BrushDispose, _GDIPlus_ImageAttributesCreate, _GDIPlus_ImageAttributesDispose

Voir aussi

Consultez GdipCreateTextureIA dans la Librairie MSDN.

Exemple

#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <ScreenCapture.au3>
#include <WinAPIHObj.au3>

Global $g_hHBitmap, $g_hGfxCtxt, $g_hBMP, $g_hGfx
Global $g_iTiles = 24, $g_a_hBmp_Tiles[$g_iTiles][$g_iTiles]

Example()

Func Example()
    AutoItSetOption("GUIOnEventMode", 1)

    Local $iW = 576, $iH = 576, $iTMP, $iSin = 0, $iMulti = 256 / $g_iTiles, $2Multi = 2 * $iMulti, _
            $hCtxt, $hTextureIA, $fValue, $iFrameTimer = TimerInit()

    _GDIPlus_Startup()
    $g_hHBitmap = _ScreenCapture_Capture("", 0, 0, $g_iTiles ^ 2, $g_iTiles ^ 2) ; capturer le bureau et l'enregistrer dans la m�moire au format GDI
    Local $hImage = _GDIPlus_BitmapCreateFromHBITMAP($g_hHBitmap) ; Convertir l'image bitmap GDI en bitmap GDI+
    ; $Locale = iImgW _GDIPlus_ImageGetWidth ($Himage); Obtient la largeur de l'image
    ; $Locale = iImgH _GDIPlus_ImageGetHeight ($Himage); Obtient la hauteur de l'image

    Local $hGUI = GUICreate("GDI+ TextureIA", $iW, $iH) ; Cr�e une GUI
    $g_hGfx = _GDIPlus_GraphicsCreateFromHWND($hGUI) ; Cr�e un objet graphique pour l'affichage graphique GDI+
    $g_hBMP = _GDIPlus_BitmapCreateFromGraphics($iW, $iH, $g_hGfx) ; Cr�e un objet bitmap � partir d'un objet graphique
    $g_hGfxCtxt = _GDIPlus_ImageGetGraphicsContext($g_hBMP) ; Obtient le contexte graphique de l'image/bitmap

    Local $hBitmap = _GDIPlus_BitmapCreateFromScan0($g_iTiles ^ 2, $g_iTiles ^ 2) ; Cr�e un bitmap vide (n�cessaire plus tard pour cr�er la texture)
    Local $hContext = _GDIPlus_ImageGetGraphicsContext($hBitmap) ; Obtient le contexte graphique de l'image/bitmap
    _GDIPlus_GraphicsDrawImageRect($hContext, $hImage, 0, 0, $g_iTiles ^ 2, $g_iTiles ^ 2) ; Copie l'image dans le bitmap vide
    _GDIPlus_GraphicsDispose($hContext) ; Lib�re le handle du contexte graphique
    _GDIPlus_ImageDispose($hImage) ; Lib�re le handle de l'image

    Local $tCM = _GDIPlus_ColorMatrixCreateScale(0, 0, 0) ; Cr�e et initialise une matrice couleur de mise � l'�chelle (matrice 5 x 5 homog�ne pour une transformation dans l'espace de dimension 4) -> voir http://msdn.microsoft.com/en- us/Librairie/windows/desktop/ms533875(v=vs.85).aspx
    Local $pImgAttr = _GDIPlus_ImageAttributesCreate() ; Cr�e un objet d'attributs d'image (n�cessaire pour la manipulation des couleurs)
    Local $fSizeInv = 1 / $g_iTiles

    ; Cr�e $g_iTiles * $g_iTiles de petites images bitmaps (pav�s) pour remplir avec des parties de l'image captur�e
    For $iY = 0 To $g_iTiles - 1
        For $iX = 0 To $g_iTiles - 1
            $g_a_hBmp_Tiles[$iY][$iX] = _GDIPlus_BitmapCreateFromScan0($g_iTiles, $g_iTiles) ; Cr�e un bitmap vide
            $hCtxt = _GDIPlus_ImageGetGraphicsContext($g_a_hBmp_Tiles[$iY][$iX]) ; Obtient le contexte graphique de l'image/bitmap
            $fValue = BitXOR($iX, $iY) * $fSizeInv
            $tCM.m(1) = 1 - $fValue ; rouge
            $tCM.m(7) = $fValue ; vert
            $tCM.m(19) = 0.4 ; alpha
            _GDIPlus_ImageAttributesSetColorMatrix($pImgAttr, 0, True, $tCM) ; Ajuste la matrice couleur ImageAttribute pour chaque bitmap
            $hTextureIA = _GDIPlus_TextureCreateIA($hBitmap, $iX * $g_iTiles, $iY * $g_iTiles, $g_iTiles, $g_iTiles, $pImgAttr) ; Cr�e un objet TextureBrush � partir d'une image avec des attributs d'image modifi�es
            _GDIPlus_GraphicsFillRect($hCtxt, 0, 0, $g_iTiles, $g_iTiles, $hTextureIA) ; Dessine un rectangle rempli avec des pav�s manipul�e de l'image dans le bitmap
            _GDIPlus_GraphicsDispose($hCtxt) ; Lib�re le handle du contexte graphique
            _GDIPlus_BrushDispose($hTextureIA) ; Lib�re la texture
        Next
    Next
    _GDIPlus_ImageAttributesDispose($pImgAttr) ; Lib�re l'objet ImageAttributes

    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit", $hGUI)
    GUISetState(@SW_SHOW, $hGUI)

    While Sleep(10)
        $iSin += 25 / (1000 / TimerDiff($iFrameTimer))
        _GDIPlus_GraphicsClear($g_hGfxCtxt, 0xB0808080) ; Efface l'objet graphique avec une couleur sp�cifi�e
        For $iX = 0 To $g_iTiles - 1
            $iTMP = 2 * $iX * $iMulti
            For $iY = 0 To $g_iTiles - 1
                ; D�place chaque mosa�que � sa nouvelle position
                _GDIPlus_GraphicsDrawImageRect($g_hGfxCtxt, $g_a_hBmp_Tiles[$iY][$iX], _ ; Handle de bitmap
                        25 + 15 * Sin($iY * $iMulti / 64 + $iSin) + $iTMP, _ ; x pos
                        15 * Cos($iX * $iMulti / 64 + $iSin) + 25 + $iY * $2Multi, _ ; y pos
                        $2Multi, _ ; largeur
                        $2Multi) ; hauteur
            Next
        Next
        _GDIPlus_GraphicsDrawImage($g_hGfx, $g_hBMP, 0, 0) ; Dessine l'image compl�te dans la GUI
        $iFrameTimer = TimerInit()
    WEnd
EndFunc   ;==>Example

Func _Exit() ; Nettoie les ressources
    _WinAPI_DeleteObject($g_hHBitmap)
    _GDIPlus_GraphicsDispose($g_hGfxCtxt)
    _GDIPlus_BitmapDispose($g_hBMP)
    _GDIPlus_GraphicsDispose($g_hGfx)
    For $iY = 0 To $g_iTiles - 1
        For $iX = 0 To $g_iTiles - 1
            _GDIPlus_BitmapDispose($g_a_hBmp_Tiles[$iY][$iX])
        Next
    Next
    _GDIPlus_Shutdown()
    Exit
EndFunc   ;==>_Exit