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

_Example()

Func _Example()
	Local $hGUI, $hGraphics, $hBrush, $iGraphicsCont

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

	$hGUI = GUICreate("Создаёт графический контейнер", 400, 350)
	GUISetState()

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

	;  Устанавливает область отсечения для объекта Graphics
	_GDIPlus_GraphicsSetClipRect($hGraphics, 10, 10, 150, 150)

	; Создаёт графический контейнер
	$iGraphicsCont = _GDIPlus_GraphicsBeginContainer2($hGraphics)

	; Устанавливает дополнительную область отсечения для контейнера
	_GDIPlus_GraphicsSetClipRect($hGraphics, 100, 50, 100, 75) 

	; Заполняет красным прямоугольник в контейнере
	$hBrush = _GDIPlus_BrushCreateSolid(0xFFFF0000) ; Красный
	_GDIPlus_GraphicsFillRect($hGraphics, 0, 0, 400, 400, $hBrush)

	; Завершает контейнер и сбрасывает состояние graphics в состояние, которое было перед началом создания контейнера
	_GDIPlus_GraphicsEndContainer($hGraphics, $iGraphicsCont)

	; Заполняет синим прямоугольник вне контейнера
	_GDIPlus_BrushSetFillColor($hBrush, 0x800000FF) ; Полупрозрачный синий
	_GDIPlus_GraphicsFillRect($hGraphics, 0, 0, 400, 400, $hBrush)

	; Устанавливает область отсечения в бесконечность, и рисует контуры двух предыдущих областей отсечения
	_GDIPlus_GraphicsResetClip($hGraphics)
	_GDIPlus_GraphicsDrawRect($hGraphics, 10, 10, 150, 150)
	_GDIPlus_GraphicsDrawRect($hGraphics, 100, 50, 100, 75)

	Do
	Until GUIGetMsg() = $GUI_EVENT_CLOSE

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

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