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

_Example()

Func _Example()
	Local $hGUI, $hGraphics, $hPath, $hPathBrush, $hLineBrush, $hBitmap, $hContext

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

	$hGUI = GUICreate("Создаёт Bitmap сканированием", 400, 200)
	GUISetState()

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

	; Создаёт bitmap с размером, но без данных
	$hBitmap = _GDIPlus_BitmapCreateFromScan0(200, 200)

	; Get the bitmap graphics context to draw using double buffering
	$hContext = _GDIPlus_ImageGetGraphicsContext($hBitmap)
	; Create the linear gradient brush used to fill the shapes
	$hLineBrush = _GDIPlus_LineBrushCreate(1, 1, 200 - 2, 200 - 2, 0x000000FF, 0xA00000FF)

	; Создаёт объект GraphicsPath для рисования фигур, используя режим заливки по умолчанию
	$hPath = _GDIPlus_PathCreate()

	; Начинает рисовать фигуру
	_GDIPlus_PathStartFigure($hPath)
	; Рисует эллипс
	_GDIPlus_PathAddEllipse($hPath, 2, 2, 200 - 4, 200 - 4)

	; Задаёт режим сглаживания and draw the path to the bitmap context using the brushes
	_GDIPlus_GraphicsSetSmoothingMode($hContext, $SmoothingModeAntiAlias)
	_GDIPlus_GraphicsFillPath($hContext, $hPath, $hLineBrush)

	; Наконец, рисует bitmap на графическом объекте
	_GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 100, 0)

	Do
	Until GUIGetMsg() = $GUI_EVENT_CLOSE

	; Освобождает ресурсы
	_GDIPlus_PathDispose($hPath)
	_GDIPlus_BrushDispose($hLineBrush)
	_GDIPlus_GraphicsDispose($hContext)
	_GDIPlus_ImageDispose($hBitmap)
	_GDIPlus_GraphicsDispose($hGraphics)

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