#include <GUIConstantsEx.au3>
#include <GDIP.au3>
#include <ScreenCapture.au3>

Local $hBitmap, $hBmp, $hGraphics, $hGUI, $hIA, $iDHeight, $iDWidth, $saturation, $tColorMatrix, $pColorMatrix

_GDIPlus_Startup()

$iDWidth = @DesktopWidth / 3
$iDHeight = @DesktopHeight / 3

$hGUI = GUICreate("Создаёт негативную матрицу цвета", $iDWidth, $iDHeight)

$hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)

; Делает снимок левой верхней части экрана
$hBmp = _ScreenCapture_Capture("", 0, 0, $iDWidth, $iDHeight, False)

; Создаёт объект GDI+ Bitmap из объекта GDI Bitmap
$hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hBmp)

; Создаёт негативную матрицу цвета
$tColorMatrix = _GDIPlus_ColorMatrixCreateNegative()
$pColorMatrix = DllStructGetPtr($tColorMatrix)

; Создает объект ImageAttributes
$hIA = _GDIPlus_ImageAttributesCreate()
; Устанавливает матрицу цвета
_GDIPlus_ImageAttributesSetColorMatrix($hIA, 0, True, $pColorMatrix)

GUISetState()

; Рисует изображение в указанном прямоугольнике
_GDIPlus_GraphicsDrawImageRectRectIA($hGraphics, $hBitmap, 0, 0, $iDWidth, $iDHeight, 0, 0, $iDWidth, $iDHeight, $hIA)

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

_GDIPlus_ImageAttributesDispose($hIA) ; Освобождает объект ImageAttributes
_GDIPlus_ImageDispose($hBitmap)
_GDIPlus_GraphicsDispose($hGraphics)

_GDIPlus_Shutdown()