#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.6.0
 Author:         myName

 Script Function:
	Template AutoIt script.

#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here

#include <GDIPlus.au3>
#include <Array.au3>

OnAutoItExitRegister("_AutoItExit")

_GDIPlus_Startup()

#region Methoden

Func _GDIPlusButton_Create($hWnd, $Text, $x, $y, $breite, $Hoehe)
	$capGraph = _GDIPlus_GraphicsCreateFromHWND($hWnd)

	$hBMP = _GDIPlus_BitmapCreateFromGraphics($breite, $Hoehe, $capGraph)
	_GDIPlus_GraphicsDispose($capGraph)
	$capGraph = _GDIPlus_ImageGetGraphicsContext($hBMP)

	_GDIPlus_GraphicsSetSmoothingMode($capGraph, 4)

	Local $aPoints[9][2]

	$aPoints[0][0] = 8

	$aPoints[1][0] = 1
	$aPoints[1][1] = 0

	$aPoints[2][0] = $breite - 2
	$aPoints[2][1] = 0

	$aPoints[3][0] = $breite - 1
	$aPoints[3][1] = 1

	$aPoints[4][0] = $breite - 1
	$aPoints[4][1] = $Hoehe - 2

	$aPoints[5][0] = $breite - 2
	$aPoints[5][1] = $Hoehe - 1

	$aPoints[6][0] = 1
	$aPoints[6][1] = $Hoehe - 1

	$aPoints[7][0] = 0
	$aPoints[7][1] = $Hoehe - 2

	$aPoints[8][0] = 0
	$aPoints[8][1] = 1

	_GDIPlus_GraphicsDrawPolygon ($capGraph, $aPoints, _GDIPlus_PenCreate(0xFF707070))

	_GDIPlus_GraphicsSetSmoothingMode($capGraph, 0)

	$aPoints[0][0] = 8

	$aPoints[1][0] = 1 + 2
	$aPoints[1][1] = 0 + 1

	$aPoints[2][0] = $breite - 2 - 2
	$aPoints[2][1] = 0 + 1

	$aPoints[3][0] = $breite - 1 - 1
	$aPoints[3][1] = 1 + 2

	$aPoints[4][0] = $breite - 1 - 1
	$aPoints[4][1] = $Hoehe - 2 - 2

	$aPoints[5][0] = $breite - 2 - 2
	$aPoints[5][1] = $Hoehe - 1 - 1

	$aPoints[6][0] = 1 + 2
	$aPoints[6][1] = $Hoehe - 1 - 1

	$aPoints[7][0] = 0 + 1
	$aPoints[7][1] = $Hoehe - 2 - 2

	$aPoints[8][0] = 0 + 1
	$aPoints[8][1] = 1 + 2

	_GDIPlus_GraphicsDrawPolygon ($capGraph, $aPoints, _GDIPlus_PenCreate(0xFFFFFFFF))


	Local $AnzahlLinien = ($Hoehe - 7) + 2
	Local $Array = ColorGradient(0xFCFCFC, 0xCFCFCF, $AnzahlLinien)

	Local $pen = _GDIPlus_PenCreate(Number("0xFF" & Hex($Array[0], 6)))

	_GDIPlus_GraphicsDrawLine($capGraph, 3, 2, $breite - 4, 2, $pen)

	For $i = 0 To $Hoehe - 7
		$pen = _GDIPlus_PenCreate(Number("0xFF" & Hex($Array[$i + 1], 6)))
		_GDIPlus_GraphicsDrawLine($capGraph, 2, 3 + $i, $breite - 3, 3 + $i, $pen)
	Next

	$pen = _GDIPlus_PenCreate(Number("0xFF" & Hex($Array[$AnzahlLinien - 1], 6)))
	_GDIPlus_GraphicsDrawLine($capGraph, 3, $Hoehe - 3, $breite - 4, $Hoehe - 3, $pen)

;~ 	_GDIPlus_GraphicsDrawString($capGraph, $Text, 25, 10, "Arial", 12)

	$hBitmap_GDI = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBMP)

	Local $ID = GUICtrlCreatePic("", $x, $y, $breite, $Hoehe)

	_SetBitmapToCtrl($ID, $hBitmap_GDI)
;~ 	_GDIPlus_GraphicsDispose($capGraph)
;~ 	_GDIPlus_BitmapDispose($hBMP)
	Local $ar[6] = [$ID, $capGraph, $hBMP, $breite, $Hoehe, $AnzahlLinien]
	Return $ar
EndFunc

Func _GDIPlusButton_SetState($button, $State)
	Local $capGraph = $button[1]
	Local $hBMP = $button[2]
	Local $breite = $button[3]
	Local $Hoehe = $button[4]
	Local $AnzahlLinien = $button[5]


	_GDIPlus_GraphicsSetSmoothingMode($capGraph, 0)

	Local $pen = _GDIPlus_PenCreate(0xFF000000)

;~ 	_GDIPlus_GraphicsDrawLine($capGraph, 1, 1, 50, 10, $pen)



	If $State = 1 Then
		Local $Array = ColorGradient(0xCFCFCF, 0xFCFCFC, $AnzahlLinien)
	ElseIf $State = 2 Then
		Local $Array = ColorGradient(0xFCFCFC, 0xCFCFCF, $AnzahlLinien)
	EndIf


	Local $pen = _GDIPlus_PenCreate(Number("0xFF" & Hex($Array[0], 6)))

	_GDIPlus_GraphicsDrawLine($capGraph, 3, 2, $breite - 4, 2, $pen)

	For $i = 0 To $Hoehe - 7
		$pen = _GDIPlus_PenCreate(Number("0xFF" & Hex($Array[$i + 1], 6)))
		_GDIPlus_GraphicsDrawLine($capGraph, 2, 3 + $i, $breite - 3, 3 + $i, $pen)
	Next

	$pen = _GDIPlus_PenCreate(Number("0xFF" & Hex($Array[$AnzahlLinien - 1], 6)))
	_GDIPlus_GraphicsDrawLine($capGraph, 3, $Hoehe - 3, $breite - 4, $Hoehe - 3, $pen)







	$hBitmap_GDI = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBMP)

	_SetBitmapToCtrl($button[0], $hBitmap_GDI)

EndFunc

Func RandomColor($hMinColor = 0x000000, $hMaxColor = 0xFFFFFF)
	$hMinColor = Hex($hMinColor, 6)
	$hMaxColor = Hex($hMaxColor, 6)

	Local $iRed1 = Dec(StringLeft($hMinColor, 2))
	Local $iGreen1 = Dec(StringMid($hMinColor, 3, 2))
	Local $iBlue1 = Dec(StringMid($hMinColor, 5, 2))

	Local $iRed2 = Dec(StringLeft($hMaxColor, 2))
	Local $iGreen2 = Dec(StringMid($hMaxColor, 3, 2))
	Local $iBlue2 = Dec(StringMid($hMaxColor, 5, 2))

	Local $iRndRed = Random($iRed1, $iRed2, 1)
	Local $iRndGreen = Random($iGreen1, $iGreen2, 1)
	Local $iRndBlue = Random($iBlue1, $iBlue2, 1)

	Return Dec(Hex($iRndRed, 2) & Hex($iRndGreen, 2) & Hex($iRndBlue, 2))
EndFunc   ;==>RandomColor

Func ColorGradient($hInitialColor, $hFinalColor, $iReturnSize)
	$hInitialColor = Hex($hInitialColor, 6)
	$hFinalColor = Hex($hFinalColor, 6)

	Local $iRed1 = Dec(StringLeft($hInitialColor, 2))
	Local $iGreen1 = Dec(StringMid($hInitialColor, 3, 2))
	Local $iBlue1 = Dec(StringMid($hInitialColor, 5, 2))

	Local $iRed2 = Dec(StringLeft($hFinalColor, 2))
	Local $iGreen2 = Dec(StringMid($hFinalColor, 3, 2))
	Local $iBlue2 = Dec(StringMid($hFinalColor, 5, 2))

	Local $iPlusRed = ($iRed2 - $iRed1) / ($iReturnSize - 1)
	Local $iPlusBlue = ($iBlue2 - $iBlue1) / ($iReturnSize - 1)
	Local $iPlusGreen = ($iGreen2 - $iGreen1) / ($iReturnSize - 1)

	Dim $iColorArray[$iReturnSize]
	For $i = 0 To $iReturnSize - 1
		$iNowRed = Floor($iRed1 + ($iPlusRed * $i))
		$iNowBlue = Floor($iBlue1 + ($iPlusBlue * $i))
		$iNowGreen = Floor($iGreen1 + ($iPlusGreen * $i))
		$iColorArray[$i] = Dec(Hex($iNowRed, 2) & Hex($iNowGreen, 2) & Hex($iNowBlue, 2))
	Next
	Return ($iColorArray)
EndFunc   ;==>ColorGradient

;Setzt ein Bild in ein Control.
Func _SetBitmapToCtrl($CtrlId, $hBitmap)
	Local Const $STM_SETIMAGE = 0x0172
	Local Const $IMAGE_BITMAP = 0
	Local Const $SS_BITMAP = 0xE
	Local Const $GWL_STYLE = -16

	Local $hWnd = GUICtrlGetHandle($CtrlId)
	If $hWnd = 0 Then Return SetError(1, 0, 0)

	Local $oldStyle = DllCall("user32.dll", "long", "GetWindowLong", "hwnd", $hWnd, "int", $GWL_STYLE)
	If @error Then Return SetError(2, 0, 0)
	DllCall("user32.dll", "long", "SetWindowLong", "hwnd", $hWnd, "int", $GWL_STYLE, "long", BitOR($oldStyle[0], $SS_BITMAP))
	If @error Then Return SetError(3, 0, 0)

	Local $oldBmp = DllCall("user32.dll", "hwnd", "SendMessage", "hwnd", $hWnd, "int", $STM_SETIMAGE, "int", $IMAGE_BITMAP, "int", $hBitmap)
	If @error Then Return SetError(4, 0, 0)
	If $oldBmp[0] <> 0 Then DllCall("GDI32.dll", "int", "DeleteObject", "int", $oldBmp[0])
	Return 1
EndFunc   ;==>_SetBitmapToCtrl

;Beim beenden.
Func _AutoItExit()
	_GDIPlus_Shutdown()
EndFunc

#EndRegion Methoden














