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

Example()

Func Example()
	Local $hGUI, $hGraphic, $hBrush, $hPen, $hPen2, $hPath

	$hGUI = GUICreate("Добавляет кривую в GraphicsPath", 400, 200)
	GUISetState(@SW_SHOW)

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

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

	; Задаёт режим сглаживания $GDIP_SMOOTHINGMODE_HIGHQUALITY = 2
	_GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2)

	; Очищает графический объект белым цветом
	_GDIPlus_GraphicsClear($hGraphic, 0xFFFFFFFF)

	; Создаёт кисти и карандаши
	$hBrush = _GDIPlus_BrushCreateSolid(0x7F8800AA) ; для заливки
	$hPen = _GDIPlus_PenCreate(0xFF8800AA, 2) ; для линии
	$hPen2 = _GDIPlus_PenCreate(0xFFFF0000, 2) ; для квадратных красных точек

	; Задаёт точки кривой
	Local $aPoints[5][2] = [[4]]
	$aPoints[1][0] = 10
	$aPoints[1][1] = 100
	$aPoints[2][0] = 100
	$aPoints[2][1] = 190
	$aPoints[3][0] = 300
	$aPoints[3][1] = 10
	$aPoints[4][0] = 390
	$aPoints[4][1] = 100

	; Создаёт объект GraphicsPath
	$hPath = _GDIPlus_PathCreate()

	; Создаёт надпись
	_GDIPlus_GraphicsDrawString($hGraphic, "Кривая", $aPoints[1][0], 20)

	; Добавляет кривую в объект GraphicsPath
	_GDIPlus_PathAddCurve($hPath, $aPoints)

	; Рисует прямоугольники в точках массива
	For $i = 1 To $aPoints[0][0]
		_GDIPlus_GraphicsDrawRect($hGraphic, $aPoints[$i][0] - 4, $aPoints[$i][1] - 4, 8, 8, $hPen2)
		$aPoints[$i][0] += 200
	Next

	; Заливка объекта GraphicsPath
	_GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush)

	; Рисует объект GraphicsPath
	_GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen)

	Do
	Until GUIGetMsg() = $GUI_EVENT_CLOSE

	; Освобождает ресурсы
	_GDIPlus_PathDispose($hPath)
	_GDIPlus_BrushDispose($hBrush)
	_GDIPlus_PenDispose($hPen)
	_GDIPlus_PenDispose($hPen2)
	_GDIPlus_GraphicsDispose($hGraphic)
	_GDIPlus_Shutdown()
EndFunc   ;==>Example