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

_Example()

Func _Example()
	Local $hGUI, $hGraphics, $hBmp, $hBitmap, $tColorMatrix, $pColorMatrix, $hIA
    Local Const $iWidth = 600, $iHeight = 600

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

	; Создаёт GUI (нажмите ESC для выхода)
	$hGUI = GUICreate("", $iWidth, $iHeight)

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

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

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

	; Создаёт объект градаций серого ImageAttributes
	$hIA = _GDIPlus_ImageAttributesCreate()

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

	; Устанавливает цвета изображения в градации серого
	_GDIPlus_ImageAttributesSetColorMatrix($hIA, 0, True, $pColorMatrix)

	GUISetState()

	; Устанавливает режим интерполяции, влияющий на качество
	_GDIPlus_GraphicsSetInterpolationMode($hGraphics, 7)

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

	Do
	Until GUIGetMsg() = $GUI_EVENT_CLOSE

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

	; Закрывает библиотеку GDI+
	_GDIPlus_Shutdown()
EndFunc