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

_Example()

Func _Example()
	Local $hGUI
	Local $hGraphics, $hBrush, $hContext, $hBitmap, $hIA, $aColorMap[2][2], $iI, $iJ, $iClr

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

	$hGUI = GUICreate("Рисует изображение", 400, 200)
	GUISetState()

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

	; Создаёт объект Bitmap размером 180x120
	$hBitmap = _GDIPlus_BitmapCreateFromScan0(180, 120)

	; Получает графический контекст изображения, чтобы рисовать в нём
	$hContext = _GDIPlus_ImageGetGraphicsContext($hBitmap)
	_GDIPlus_GraphicsClear($hContext)

	For $iI = 0 To 5
		For $iJ = 0 To 3
			Switch Mod($iI+$iJ, 3)
				Case 0
					$iClr = 0xFFFF0000
				Case 1
					$iClr = 0xFF00FF00
				Case Else
					$iClr = 0xFF0000FF
			EndSwitch
			
			_GDIPlus_BrushSetFillColor($hBrush, $iClr) ; Устанавливает цвет заполнения сплошной кистью
			_GDIPlus_GraphicsFillRect($hContext, $iI*30, $iJ*30, 30, 30, $hBrush) ; Рисует заполненный прямоугольник
		Next
	Next

	; Создаёт объект ImageAttribute для настройки цветов изображения
	$hIA = _GDIPlus_ImageAttributesCreate()

	; Создаёт таблицу подмены цветов, которая заменяет красные цвета желтыми
	$aColorMap[0][0] = 1
	$aColorMap[1][0] = 0xFFFF0000 ; Красный
	$aColorMap[1][1] = 0xFFFFFF00 ; Жёлтый

	_GDIPlus_ImageAttributesSetRemapTable($hIA, 0, True, $aColorMap)

	; Рисует исходное изображение
	_GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 5, 5)
	; Рисует обрезанное изображение
	_GDIPlus_GraphicsDrawImagePointsRect($hGraphics, $hBitmap, 220, 5, 370, 5, 190, 125, 0, 0, 180, 120, 2, $hIA)

	Do
	Until GUIGetMsg() = $GUI_EVENT_CLOSE

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

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