; Authenticity
; http://www.autoitscript.com/forum/index.php?showtopic=106021
#include <GDIP.au3>
#include <GUIConstantsEx.au3>
#include <ScreenCapture.au3>

Example()

Func Example()
	Local $hGUI, $hGraphics, $hIA, $tColorMatrix, $hHBmp, $hBitmap, $pColorMatrix

    ; Инициализирует библиотеку GDI+
    _GDIPlus_Startup()

    Local Const $iWidth = 600, $iHeight = 600

	; Делает снимок левой верхней части экрана
    $hHBmp = _ScreenCapture_Capture("", 0, 0, $iWidth, $iHeight)

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

    _WinAPI_DeleteObject($hHBmp) ; Освобождает ресурс GDI bitmap, потому что он больше не нужен

    $hGUI = GUICreate("Создаёт матрицу цвета", $iWidth, $iHeight)
    GUISetState(@SW_SHOW)

	; Создаёт графический объект из дескриптора окна
    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)

	; Создает объект ImageAttributes
    $hIA = _GDIPlus_ImageAttributesCreate()

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

    For $iX = 0 To 3 ; манипулирует некоторыми значениями в матрице цвета
        For $iY = 0 To 3
            DllStructSetData($tColorMatrix, "m", Random(0, 0.5), $iY * 5 + $iX + 1)
        Next
    Next

	; Устанавливает матрицу цвета
	_GDIPlus_ImageAttributesSetColorMatrix($hIA, 0, True, $pColorMatrix)

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

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    ; Освобождает ресурсы
    _GDIPlus_ImageAttributesDispose($hIA)
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_BitmapDispose($hBitmap)

    ; Закрывает библиотеку GDI+
    _GDIPlus_Shutdown()
    GUIDelete($hGUI)
EndFunc   ;==>Example
