UDF > WinAPIEx > GDI > BitMaps >


_WinAPI_MaskBlt

Combine les données de couleurs des bitmaps source et de destination à l'aide du masque spécifié et d'une opération raster

#include <WinAPIGdi.au3>
_WinAPI_MaskBlt ( $hDestDC, $iXDest, $iYDest, $iWidth, $iHeight, $hSrcDC, $iXSrc, $iYSrc, $hMask, $iXMask, $iYMask, $iRop )

Paramètres

$hDestDC Handle du contexte de périphérique de destination.
$iXDest La coordonnée x, en unités logiques, du coin supérieur gauche du rectangle de destination.
$iYDest La coordonnée y, en unités logiques, du coin supérieur gauche du rectangle de destination.
$iWidth La largeur, en nombre d'unités logiques, du rectangle de destination et du bitmap source.
$iHeight La hauteur, dans les unités logiques, de rectangle de destination et du bitmap source.
$hSrcDC Handle du contexte de périphérique à partir duquel le bitmap doit être copié.
$iXSrc La coordonnées x, en unités logiques, du coin supérieur gauche du bitmap source.
$iYSrc La coordonnée y, en unités logiques, du coin supérieur gauche du bitmap source.
$hMask Handle du bitmap de masque monochrome associée au bitmap en couleur dans le contexte de périphérique de la source.
$iXMask Le décalage horizontal des pixels du bitmap du masque spécifié par le paramètre hbmMask.
$iYMask Le décalage vertical des pixels du bitmap du masque spécifié par le paramètre hbmMask.
$iRop Le code de l'opération de trame (le même que pour _WinAPI_BitBlt()).

Valeur de retour

Succès: Retourne True
Échec: Retourne False

Remarques

Une valeur de 1 dans le masque spécifiée par $hMask indique que l'opération de trame d'avant-plan spécifiée par le code $iRop doit être appliquée à cette position.
Une valeur de 0 dans le masque indique que l'opération de trame d'arrière-plan spécifié par le code $iRop doit être appliquée à cette position.

Si aucun bitmap masque est fourni, cette fonction se comporte exactement comme _WinAPI_BitBlt(), en utilisant le code de l'opération de trame d'arrière-plan.

En relation

_WinAPI_BitBlt

Voir aussi

Consultez MaskBlt dans la librairie MSDN.

Exemple

#include <GUIConstantsEx.au3>
#include <SendMessage.au3>
#include <StaticConstants.au3>
#include <WinAPIGdi.au3>
#include <WinAPIGdiDC.au3>
#include <WinAPIHObj.au3>
#include <WinAPIIcons.au3>
#include <WinAPIRes.au3>
#include <WinAPIShellEx.au3>
#include <WindowsConstants.au3>

; Extrait une icône et obtient son bitmap de masque de bits AND
Local $hIcon = _WinAPI_ShellExtractIcon(@ScriptDir & '\Extras\Arrow.ico', 0, 64, 64)
Local $aInfo = _WinAPI_GetIconInfo($hIcon)
_WinAPI_DeleteObject($aInfo[5])
_WinAPI_DestroyIcon($hIcon)

; Crée un bitmap de masque de bits inversé
$aInfo[5] = _WinAPI_InvertANDBitmap($aInfo[4])

; Charge le bitmap Pattern.bmp
Local $hPattern = _WinAPI_LoadImage(0, @ScriptDir & '\Extras\Pattern.bmp', $IMAGE_BITMAP, 0, 0, $LR_LOADFROMFILE)

; Crée une GUI
Local $hForm = GUICreate('Test '& StringReplace(@ScriptName, '.au3', '()'), 320, 64)
GUICtrlCreateIcon(@ScriptDir & '\Extras\Arrow.ico', 0, 0, 0, 64, 64)
GUICtrlCreatePic(@ScriptDir & '\Extras\Pattern.bmp', 192, 0, 64, 64)
Local $idIcon = GUICtrlCreateIcon('', 0, 256, 0, 64, 64)
Local $aidPic[2], $ahPic[2]
$aidPic[0] = GUICtrlCreatePic('', 64, 0, 64, 64)
$aidPic[1] = GUICtrlCreatePic('', 128, 0, 64, 64)
For $i = 0 To 1
    $ahPic[$i] = GUICtrlGetHandle($aidPic[$i])
Next

; Crée un bitmap de masque de bits XOR
Local $hDC = _WinAPI_GetDC($ahPic)
Local $hSrcDC = _WinAPI_CreateCompatibleDC($hDC)
Local $hSrcSv = _WinAPI_SelectObject($hSrcDC, $hPattern)
Local $hDestDC = _WinAPI_CreateCompatibleDC($hDC)
Local $hXOR = _WinAPI_CreateCompatibleBitmap($hDC, 64, 64)
Local $hDestSv = _WinAPI_SelectObject($hDestDC, $hXOR)
_WinAPI_MaskBlt($hDestDC, 0, 0, 64, 64, $hSrcDC, 0, 0, $aInfo[5], 0, 0, $SRCCOPY)
_WinAPI_ReleaseDC($ahPic, $hDC)
_WinAPI_SelectObject($hDestDC, $hDestSv)
_WinAPI_DeleteDC($hDestDC)
_WinAPI_SelectObject($hSrcDC, $hSrcSv)
_WinAPI_DeleteObject($hPattern)
_WinAPI_DeleteDC($hSrcDC)

; Crée une icône

$hIcon = _WinAPI_CreateIconIndirect($hXOR, $aInfo[4])
_WinAPI_DeleteObject($hXOR)

; Définit les deux bitmaps de masque de bits dans les contrôles
Local $hObj
For $i = 0 To 1
    _SendMessage($ahPic[$i], $STM_SETIMAGE, 0, $aInfo[$i + 4])
    $hObj = _SendMessage($ahPic[$i], $STM_GETIMAGE)
    If $hObj <> $aInfo[$i + 4] Then
        _WinAPI_DeleteObject($aInfo[$i + 4])
    EndIf
Next

; Définit l'icône dans le contrôle
GUICtrlSendMsg($idIcon, $STM_SETIMAGE, 1, $hIcon)

; Affiche la GUI
GUISetState(@SW_SHOW)

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE