#NoTrayIcon
#include <Misc.au3>
#include <WINAPI.au3>
#include <GDIPlus.au3>
#include <GUIConstants.au3>
Opt('GUIOnEventMode', 1)
Opt('MouseCoordMode', 2)
$hGUI = GUICreate('Рисование в окне', 500, 250, -1, -1, -1, $WS_EX_LAYERED)
GUISetBkColor(0x000000)
_WINAPI_SetLayeredWindowAttributes($hGUI, 0xABCDEF, 255)
$iButtonSave = GUICtrlCreateButton('Сохранить', 375, 220)
GUICtrlSetBkColor(-1, 0xCCFFCC)
GUICtrlSetOnEvent(-1, '_Save')
$iButtonClear = GUICtrlCreateButton('Очистить', 440, 220)
GUICtrlSetBkColor(-1, 0xffc8c8)
GUICtrlSetOnEvent(-1, '_Clear')
GUISetOnEvent(-3, '_Exit')
GUISetState()
_GDIPlus_Startup()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
$hImage = _GDIPlus_BitmapCreateFromGraphics(500, 250, $hGraphic)
$hBufferGraphics = _GDIPlus_ImageGetGraphicsContext($hImage)
_GDIPlus_GraphicsSetSmoothingMode($hBufferGraphics, 2)
$hPen = _GDIPlus_PenCreate(0xaa0000ff, 4) ;Если 6 символов, то в начале добавить "aa"
$hDLL = DllOpen('user32.dll')
Do
If _IsPressed('01', $hDLL) And WinActive($hGUI) Then
$aOldPos = MouseGetPos()
Do
$aPos = MouseGetPos()
If $aPos[0] <> $aOldPos[0] Or $aPos[1] <> $aOldPos[1] Then
_GDIPlus_GraphicsDrawLine($hBufferGraphics, $aOldPos[0], $aOldPos[1], $aPos[0], $aPos[1], $hPen)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
$aOldPos = $aPos
EndIf
Sleep(10)
Until Not _IsPressed('01', $hDLL)
EndIf
Sleep(10)
Until False
Func _Save()
_GDIPlus_ImageSaveToFile($hImage, @ScriptDir&'\Image-'&@MIN&'.png')
GUIDelete($hGUI)
_Exit()
EndFunc ;==>_Save()
Func _Clear()
_GDIPlus_GraphicsClear($hGraphic, 0x000000)
_GDIPlus_GraphicsClear($hBufferGraphics, 0x000000)
GUICtrlSetState($iButtonSave, $GUI_SHOW)
GUICtrlSetState($iButtonClear, $GUI_SHOW)
EndFunc ;==>_Clear()
Func _Exit()
_GDIPlus_PenDispose($hPen)
_GDIPlus_GraphicsDispose($hBufferGraphics)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_BitmapDispose($hImage)
_GDIPlus_Shutdown()
DllClose($hDLL)
Exit
EndFunc ;==>_Exit()