#include <GDIPlus.au3>
#include <WinAPIGdiDC.au3>
_GDIPlus_Startup()
$hWnd = GUICreate("Rounded Rectangles")
GUISetState()
$hDC = _WinAPI_GetDC($hWnd)
$hGraphics = _GDIPlus_GraphicsCreateFromHDC($hDC)
$hBrush = _GDIPlus_BrushCreateSolid(0xFFFFC080)
$hPen = _GDIPlus_PenCreate(0xFFFF0000, 5)
_GDIPlus_GraphicsClear($hGraphics, 0xFFFFFFFF)
_GDIPlus_GraphicsSetSmoothingMode($hGraphics, 2)
_GDIPlus_GraphicsDrawRoundRect($hGraphics, 8, 8, 384, 100, 16, $hBrush, $hPen)
_GDIPlus_GraphicsDrawRoundRect($hGraphics, 8, 116, 384, 80, 20, 0, $hPen)
_GDIPlus_GraphicsDrawRoundRect($hGraphics, 8, 204, 188, 188, 20, $hBrush)
_GDIPlus_GraphicsDrawRoundRect($hGraphics, 204, 204, 188, 188, 60, $hBrush, $hPen)
While GUIGetMsg() <> -3
WEnd
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_PenDispose($hPen)
_WinAPI_ReleaseDC($hWnd, $hDC)
_GDIPlus_Shutdown()
Func _GDIPlus_GraphicsDrawRoundRect($hGraphics, $iX, $iY, $iWidth, $iHeight, $iRadius, $hBrush = 0, $hPen = 0)
Local $hPath = _GDIPlus_PathCreate()
_GDIPlus_PathAddArc($hPath, $iX + $iWidth - ($iRadius * 2), $iY, $iRadius * 2, $iRadius * 2, 270, 90)
_GDIPlus_PathAddArc($hPath, $iX + $iWidth - ($iRadius * 2), $iY + $iHeight - ($iRadius * 2), $iRadius * 2, $iRadius * 2, 0, 90)
_GDIPlus_PathAddArc($hPath, $iX, $iY + $iHeight - ($iRadius * 2), $iRadius * 2, $iRadius * 2, 90, 90)
_GDIPlus_PathAddArc($hPath, $iX, $iY, $iRadius * 2, $iRadius * 2, 180, 90)
_GDIPlus_PathCloseFigure($hPath)
If $hBrush Then _GDIPlus_GraphicsFillPath($hGraphics, $hPath, $hBrush)
If $hPen Then _GDIPlus_GraphicsDrawPath($hGraphics, $hPath, $hPen)
_GDIPlus_PathDispose($hPath)
EndFunc