#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
#include <ScreenCapture.au3>
Global $API_PREFIX = "API"
Global $Mode = 0, $Color = 0xff0000
$Form1 = GUICreate("Paint", 642, 450, -1, -1, $WS_TILEDWINDOW, $WS_EX_COMPOSITED)
$Pic1 = GUICtrlCreatePic("", -1, -2, 569, 453, $WS_BORDER)
GUICtrlSetState(-1, $GUI_DISABLE)
$Line = GUICtrlCreateButton("Линия", 576, 40, 59, 25)
$Dot = GUICtrlCreateButton("Точка", 576, 72, 59, 25)
$ColorB = GUICtrlCreateButton("Цвет", 576, 104, 59, 25)
$ColorLB = GUICtrlCreateLabel("", 576, 136, 60, 28)
GUICtrlSetBkColor(-1, $Color)
$Save = GUICtrlCreateButton("Сохранить", 576, 216, 59, 25)
$Graphic = GUICtrlCreateGraphic(0, 0, 569, 453)
GUICtrlSetGraphic($Graphic,$GUI_GR_COLOR, $Color)
GUICtrlSetBkColor(-1, 0xFFFFFF)
GUICtrlSetGraphic($Graphic, $GUI_GR_PENSIZE, 2)
GUISetState()
While 1
$WP = WinGetPos($Form1)
ControlMove($Form1, '', $Line, $WP[2] - 75, 8)
ControlMove($Form1, '', $Dot, $WP[2] - 75, 40)
ControlMove($Form1, '', $ColorB, $WP[2] - 75, 72)
ControlMove($Form1, '', $ColorLB, $WP[2] - 75, 104, 59, 25)
ControlMove($Form1, '', $Save, $WP[2] - 75, 150)
ControlMove($Form1, '', $Pic1, -1, -1, $WP[2] - 80, $WP[3] + 1)
ControlMove($Form1, '', $Graphic, -1, -1, $WP[2] - 80, $WP[3] + 1)
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $ColorB
$NewColor = _ChooseColor (2, $Color, 2, $Form1)
If Not @error Then
$Color = $NewColor
GUICtrlSetBkColor($ColorLB, $Color)
GUICtrlSetGraphic($Graphic, $GUI_GR_COLOR, $Color)
EndIf
Case $Dot
$Mode = 0
Case $Line
$Mode = 1
Case $Save
$SaveFile = FileSaveDialog('Save Image', '', 'JPEG Image Format(*.jpg)')
_ScreenCapture_SetJPGQuality(100)
_ScreenCapture_Capture($SaveFile & '.jpg', $WP[0] + 3, $WP[1] + 27, $WP[2] + 111, $WP[3] + 140, False)
EndSwitch
$Mouse = GUIGetCursorInfo()
If $Mouse[2] = 1 AND $Mouse[4] = $Graphic Then
If $Mode = 1 Then
GUICtrlSetGraphic($Graphic,$GUI_GR_MOVE,$Mouse[0],$Mouse[1])
While $Mouse[2] = 1
$Mouse = GUIGetCursorInfo()
WEnd
GUICtrlSetGraphic($Graphic,$GUI_GR_LINE,$Mouse[0],$Mouse[1])
ElseIf $Mode = 0 Then
GUICtrlSetGraphic($Graphic,$GUI_GR_DOT,$Mouse[0],$Mouse[1])
EndIf
GUICtrlSetGraphic($Graphic,$GUI_GR_REFRESH)
EndIf
WEnd
Func API_Drawline($x1,$y1,$x2,$y2) ;<=======
GUICtrlSetGraphic($Graphic,$GUI_GR_MOVE,$x1,$y1)
GUICtrlSetGraphic($Graphic,$GUI_GR_LINE,$x2,$y2)
GUICtrlSetGraphic($Graphic,$GUI_GR_REFRESH)
Return "Succesful operation"
EndFunc
Func API_Drawdot($x,$y) ;<=======
GUICtrlSetGraphic($Graphic,$GUI_GR_DOT,$x,$y)
GUICtrlSetGraphic($Graphic,$GUI_GR_REFRESH)
Return "Succesful operation"
EndFunc
Func API() ;<=======
$sIn = ConsoleRead(-1,True)
If $sIn Then
$sIn = ConsoleRead()
$sSplit = StringSplit($sIn,"(,)",0)
If $sSplit[0] >= 1 Then
Local $sArray[$sSplit[0]-1]
$sArray[0] = "CallArgArray"
For $x = 2 to $sSplit[0]-1
If StringLeft($sSplit[$x],1) == '"' AND StringRight($sSplit[$x],1) == '"' Then
$sSplit[$x] = String(StringTrimLeft(StringTrimRight($sSplit[$x],1),1))
EndIf
$sArray[$x-1] = $sSplit[$x]
Next
$sReturnData = Call($API_PREFIX&"_"&$sSplit[1],$sArray)
ConsoleWrite($sReturnData)
EndIf
EndIf
EndFunc