На форуме есть множество примеров разного рода увеличилок (луп, зумеров).
Данная версия привязана к окну EVE-Online и основана на уже предложенных ранее, с добавлением лога координат и цвета, сохранения этого лога в файл, и оконтовки в окне зума проверяемого пикселя.
Я использую режим окна EVE - "Fixed Window". Но можно использовать и любой другой.
Чтобы сдвинуть окно EVE в этом режиме, надо выбрать "Переместить" нажав правую кнопку мыши по значку клиента на панели задач (в Windows 7: Shift+ПКМ).
После чего, сначала необходимо сдвинуть окно клиента игры курсорными клавишами, и лишь потом поместить его в нужное место экрана с помощью мыши.
Лично мне она больше нравится, чем стандартные средства :-[
Последняя консольная версия 0.37
История изменений:
Код последней версии программы без GUI (Версия 0.37 ) :
GUI версии
Версия 0.42
История изменений:
Скрин версии 0.42
Управление для версии 0.45:
Изменения в 0.45 (от 30.09.2011):
Исправлены ошибки:
Данная версия привязана к окну EVE-Online и основана на уже предложенных ранее, с добавлением лога координат и цвета, сохранения этого лога в файл, и оконтовки в окне зума проверяемого пикселя.
Я использую режим окна EVE - "Fixed Window". Но можно использовать и любой другой.
Чтобы сдвинуть окно EVE в этом режиме, надо выбрать "Переместить" нажав правую кнопку мыши по значку клиента на панели задач (в Windows 7: Shift+ПКМ).
После чего, сначала необходимо сдвинуть окно клиента игры курсорными клавишами, и лишь потом поместить его в нужное место экрана с помощью мыши.
Лично мне она больше нравится, чем стандартные средства :-[
Последняя консольная версия 0.37
История изменений:
v 0.1
Первая публикация.
Есть 4x Zoom, есть лог, можно сохранять координаты точки в файл.
v 0.2
v 0.3
v 0.34
v 0.37
Управление в Версии 0.37
Первая публикация.
Есть 4x Zoom, есть лог, можно сохранять координаты точки в файл.
v 0.2
- Немного поправил форматирование в логе, и добавил значение яркости в ToolTip'е.
- Учитывая, что в первом варианте при наведении курсора на активные элементы окна EVE они подсвечивались (кнопки типа апроч и т.п.), добавлена функция 'Отключение воздействия курсора на приложение под ним '.
Теперь нажав на тильду и неспеша двигая мышку, можно считать цвет под курсором не активируя нижележащий элемент. - Добавлена возможность при нажатии на alt+Pause указать описание выбранной точки.
v 0.3
- Комбинация ctrl+* (на дополнительной клавиатуре) - изменяет коэф. увеличения zoom'a (x2, x4, x8, x16)
- Alt+Pause - теперь вместе с описанием устанавливает ключевую точку, следующие точки получаемые нажатием на Pause будут задаваться относительно последней ключевой
v 0.34
- Добавлена возможность движения "прицелом" zoom'a курсорными клавишами (alt+курсорные клавиши)
- Добавлено еще одно увеличение теперь их 5: 2x, 4x, 8x, 16x, 32x
- Добавлено отображение относительных координат в ToolTip'е (в скобках)
- Исправлено отображение квадратика "прицела", теперь оно более соответствует просматриваемой точке
- Устранено "прыганье" окна зума при смене режимов увеличения
v 0.37
- Убрано увеличение 2x
- Исправлен ряд ошибок в работе программы
- CTRL+"`"(тильда) - "замораживает"/"размораживает" видимое отображение окна клиента
- Работа Zoom'ера уже не привязана к режиму клиента Fixed Window
- CTRL+"Pause" - скрыть/показать окно Zoom'a
- Выход теперь через ALT+CTRL+"Pause"
Управление в Версии 0.37
- "Pause" - сохранение в лог текущей позиции (если была задана хоть одна ключевая точка (КТ ), то дополнительно сохраняет координаты и относительно этой КТ)
- ALT+"Pause" - сохранение в лог текущих абсолютных координат с созданием КТ и описанием "что это?" (описание вводим сами)
- CTRL+"Pause" - скрыть/показать окно Zoom'a
- ALT+CTRL+"Pause" - Выход
- CTRL+"*" (доп. клавиатура) - Изменение zoom'a (4x, 8x, 16x, 32x)
- ALT+"Курсорная клавиша" - сместить "прицел" zoom'a на одну точку в сторону
- "`" (тильда) - Включение/Выключение воздействия курсора на приложение под ним
- CTRL+"`"(тильда) - "Замораживает"/"Размораживает" видимое отображение окна клиента.
"Заморозить" - Снять скриншот с клиента и поместить поверх
"Разморозить" - Убрать скриншот с окна клиента
Код последней версии программы без GUI (Версия 0.37 ) :
Код:
#cs
v 0.37
- Убрано увеличение 2x
- Исправлен ряд ошибок в работе программы
- CTRL+"`"(тильда) - "замораживает"/"размораживает" видимое отображение окна клиента
- Работа Zoom'ера уже не привязана к режиму клиента Fixed Window
- CTRL+"Pause" - скрыть/показать окно Zoom'a
- Выход теперь через ALT+CTRL+"Pause"
#ce
#include <file.au3>
#include <GDIPlus.au3>
#include <ScreenCapture.au3>
#include <GUIConstants.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#Include <GuiListView.au3>
Opt("MouseCoordMode", 1)
Opt("TrayIconDebug", 1)
Opt("MustDeclareVars", 1)
HotKeySet("!{Up}", "StepUp")
HotKeySet("!{Down}", "StepDown")
HotKeySet("!{Right}", "StepRight")
HotKeySet("!{Left}", "StepLeft")
HotKeySet("^{NUMPADMULT}", "NextZoom")
HotKeySet("{PAUSE}", "SaveLog")
HotKeySet("!{PAUSE}", "SaveLogInput")
HotKeySet("^{PAUSE}", "HideZoom")
HotKeySet("^!{PAUSE}", "_Exit")
HotKeySet("`","HideCursor")
HotKeySet("^`", "Freeze")
OnAutoItExitRegister("_Exit")
Global $EVE_pos, $strLog = '', $fLog, $fLogName = 'Log.txt'
Global $DefaultEVE = '[TITLE:EVE; CLASS:triuiScreen]'
Global $pict, $hBit, $hGraph, $color
Global $freezePict, $hfreezeBit, $hfreezeGraph
Global $pictHide, $hBitHide, $hGraphHide
Dim $coord[2], $oldCoord[2], $pict, $hBit, $hGraph, $side = 32, $zoom = 8, $b_size[2] = [0,0] ; b_zise [8,30] для оконного режима
Dim $desk = WinGetPos("Program Manager") ; $desk - размеры рабочего стола
Global $sHide = 20, $toolTipDest[2] = [40, -40] ; Размер области резервируемой для "прикрытия" указателя мыши и расстояние ToolTip'а от указателя мыши
Global Const $WinZoomDX = 40, $WinZoomDY = 30 ; Отступ от указателя мыши для размещения окна Zoom'a
Global $bHideCursor = False ; False - курсор не прикрыт и может воздействовать на активное окно, True - курсор в зоне $sHide от своего центра прикрыт и не воздействует на активное окно
Global $bFreeze = False ; True - отображение клиента "заморожено"
Global $bHideZoom = False, $bHideZoomChange = False ; $bHideZoom=False - окно зума отображается, $bHideZoom=True - скрыть окно зума
Global $bAbs = True, $cKeyX, $cKeyY ; Заданы ли аблютные или относительные координаты, и какова абсолютная точка отчета при выборе относительных координат
Global Const $aZoomLen = 4 ; Количество элементов в массиве $aZoom и $aZoomSee
Global $zoomIndex = 2, $aZoom[$aZoomLen][2] = [[64, 4], [32,8], [16,16], [8,32]], $aZoomSee[$aZoomLen] = [4, 8, 16, 32] ; Массив с набором $side и $size для различных увеличений
Dim $size = $side*$zoom ; Размер сторон с учетом zoomа (увеличения)
Dim $pos[2] = [-1,-1], $rise[2] = [$size+2, $size+2] ; Позиция окна и его ростовые размеры (т.е. реальная ширина и высота)
Inic()
Main()
;;;;;;;;;;;;;;;;;;;;;;;;; Главная функция ;;;;;;;;;;;;;;;;;;;;;;;;;
Func Main()
While 1
if $bHideZoom Then
ToolTip("")
Sleep(100)
ContinueLoop
EndIf
$coord = MouseGetPos() ; Получаем новые координаты мыши
#region Захват изображения
$pict = _ScreenCapture_Capture("", $coord[0] - $side/2, $coord[1] - $side/2, $coord[0] + $side/2, $coord[1] + $side/2, False)
$hBit = _GDIPlus_BitmapCreateFromHBITMAP($pict)
$hGraph = _GDIPlus_GraphicsCreateFromHWND($hGUI)
_GDIPlus_GraphicsDrawImageRectRect($hGraph, $hBit, 0, 0, $side, $side, 1, 1, $side*$zoom, $side*$zoom)
#endregion Захват изображения
if $bHideCursor Then
#region Захват изображения для прикрытия курсора
$pictHide = _ScreenCapture_Capture("", $coord[0] - $sHide, $coord[1] - $sHide, $coord[0] + $sHide, $coord[1] + $sHide, False)
$hBitHide = _GDIPlus_BitmapCreateFromHBITMAP($pictHide)
$hGraphHide = _GDIPlus_GraphicsCreateFromHWND($childHide)
_GDIPlus_GraphicsDrawImageRectRect($hGraphHide, $hBitHide, 0, 0, 2*$sHide, 2*$sHide, 0, 0, 2*$sHide, 2*$sHide)
#endregion Захват изображения для прикрытия курсора
WinMove($childHide, "", $coord[0]-$sHide, $coord[1]-$sHide, 2*$sHide, 2*$sHide)
WinSetOnTop($childHide,"",1)
Else
WinSetOnTop($childHide,"",0)
WinMove($childHide, "", $coord[0]-$sHide, $coord[1]-$sHide, 0,0)
EndIf
If $coord[0] <> $oldCoord[0] Or $coord[1] <> $oldCoord[1] Or $bHideZoomChange Then ; Если координаты мыши изменились, то ...
$oldCoord = $coord
If $coord[0] > $desk[2] - $side*($zoom + 0.5) - 2 Then $coord[0] = $coord[0] - $side*$zoom - $side - 2
If $coord[1] > $desk[3] - $side*($zoom + 0.5) - 2 Then $coord[1] = $coord[1] - $side*$zoom - $side - 2
WinMove("Zoo-o-o-M", "", $coord[0] + $WinZoomDX, $coord[1] + $WinZoomDY)
$pos[0] = $coord[0] + $side/2 + $size/2 ; - $zoom
$pos[1] = $coord[1] + $side/2 + $size/2 ; - $zoom
Draw_Area()
$color = PixelGetColor($coord[0], $coord[1])
Local $x = $coord[0]-$EVE_pos[0]-$b_size[0]
Local $y = $coord[1]-$EVE_pos[1]-$b_size[1]
if $bAbs Then
ToolTip("Left: " & $x & @CRLF & "Top: " & $y & @CRLF & "цвет: " & Hex($color,6) & @CRLF & 'яркость: '& TrimColor($color), $coord[0]+$toolTipDest[0], $coord[1]+$toolTipDest[1])
Else
ToolTip("Left: " & $x & " ("& $x-$cKeyX &")" & @CRLF & "Top: " & $y &" ("& $y-$cKeyY &")"& @CRLF & "цвет: " & Hex($color,6) & @CRLF & 'яркость: '& TrimColor($color), $coord[0]+$toolTipDest[0], $coord[1]+$toolTipDest[1])
EndIf
EndIf
$bHideZoomChange = False
DisposeResources()
Sleep(50)
WEnd
Exit
EndFunc
;;;;;;;;;;;;;;;;;;;;;;;;; Функция инициализации ;;;;;;;;;;;;;;;;;;;;;;;;;
Func Inic()
#region Поиск окна EVE, его активация и настройка параметров
if Not WinExists($DefaultEVE) Then
MsgBox(48, "", "Окно клиента не найдено")
Exit
EndIf
WinActivate($DefaultEVE)
WinWaitActive($DefaultEVE)
$EVE_pos = WinGetPos($DefaultEVE)
Dim $coordAbs = MouseGetPos()
Opt("MouseCoordMode", 2)
Dim $coordR = MouseGetPos()
Opt("MouseCoordMode", 1)
$b_size[0] = $coordAbs[0]-$coordR[0]-$EVE_pos[0] ; Определяем тип режима клиента EVE
$b_size[1] = $coordAbs[1]-$coordR[1]-$EVE_pos[1]
#endregion Поиск окна EVE и его активация
CreateLogGUI()
UpdLog('Скрытие курсора установлено в '& $bHideCursor)
Global $hGUI = GUICreate("Zoo-o-o-M", $rise[0], $rise[1], $pos[0], $pos[1], $WS_POPUP, $WS_EX_TOPMOST)
GUISetState()
Create_Draw_Area($pos, $rise)
_GDIPlus_Startup()
EndFunc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Функции ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func StepUp()
MouseMove($coord[0],$coord[1]-1,0)
EndFunc
Func StepDown()
MouseMove($coord[0],$coord[1]+1,0)
EndFunc
Func StepRight()
MouseMove($coord[0]+1,$coord[1],0)
EndFunc
Func StepLeft()
MouseMove($coord[0]-1,$coord[1],0)
EndFunc
Func NextZoom()
$zoomIndex += 1
if $zoomIndex > $aZoomLen-1 Then $zoomIndex = 0 ; Следим, чтобы индекс массива не вышел за существуещий набор увеличений (у нас их 4-ре вида x16, x8, x4, x2)
$side = $aZoom[$zoomIndex][0]
$zoom = $aZoom[$zoomIndex][1]
$size = $side*$zoom
UpdLog('Увеличение установлено в x'& $aZoomSee[$zoomIndex])
GUIDelete($Bottom)
GUIDelete($Right)
GUIDelete($Left)
GUIDelete($Top)
GUIDelete($GUI)
GUIDelete($childHide)
GUIDelete($guiHide)
DisposeResources()
Create_Draw_Area($pos, $rise)
EndFunc
Func HideZoom()
$bHideZoom = Not $bHideZoom
if $bHideZoom Then ; Если необходимо скрыть окно зума
ToolTip("")
GUIDelete($Bottom)
GUIDelete($Right)
GUIDelete($Left)
GUIDelete($Top)
GUIDelete($GUI)
GUIDelete($childHide)
GUIDelete($guiHide)
DisposeResources()
GUIDelete($hGUI)
$bHideZoomChange = False
Else
$hGUI = GUICreate("Zoo-o-o-M", $rise[0], $rise[1], $pos[0], $pos[1], $WS_POPUP, $WS_EX_TOPMOST)
GUISetState()
Create_Draw_Area($pos, $rise)
$bHideZoomChange = True
EndIf
EndFunc
Func Freeze() ; Замораживаем/Размораживаем отображение клиента игры
$bFreeze = not $bFreeze
if $bFreeze Then ; Если замораживаем, то создаем окно
if not $bHideZoom Then
HideZoom()
;~ Sleep(200)
EndIf
Local $winFreeze = WinGetPos($DefaultEVE)
Local $Right = $winFreeze[0]+$winFreeze[2]
Local $Bottom = $winFreeze[1]+$winFreeze[3]
Global $hFreezeGUI = GUICreate("Freeze", $winFreeze[2], $winFreeze[3], $winFreeze[0], $winFreeze[1], $WS_POPUP, $WS_EX_TOPMOST)
GUISetBkColor(0)
#region Захват изображения
$freezePict = _ScreenCapture_Capture("", $winFreeze[0], $winFreeze[1], $Right, $Bottom, False)
GUISetState()
$hfreezeBit = _GDIPlus_BitmapCreateFromHBITMAP($freezePict)
$hfreezeGraph = _GDIPlus_GraphicsCreateFromHWND($hFreezeGUI)
_GDIPlus_GraphicsDrawImageRectRect($hfreezeGraph, $hfreezeBit, 0, 0, $winFreeze[2], $winFreeze[3], 0, 0, $winFreeze[2], $winFreeze[3])
#endregion Захват изображения
if $bHideZoom Then
HideZoom()
;~ Sleep(200)
EndIf
StepRight()
StepLeft()
UpdLog('Окно клиента "Заморожено"')
Else
_GDIPlus_GraphicsDispose($hfreezeGraph)
_GDIPlus_ImageDispose($hfreezeBit)
_WinAPI_DeleteObject($freezePict)
GUIDelete($hFreezeGUI)
UpdLog('Окно клиента "Разморожено"')
EndIf
EndFunc
Func HideCursor() ; Убираем/Включаем влияние курсора на нижележащее приложение
$bHideCursor = Not $bHideCursor
if $bHideCursor Then
WinMove($childHide, "", 1000, 1000, 2*$sHide, 2*$sHide)
EndIf
UpdLog('Скрытие курсора установлено в '& $bHideCursor)
EndFunc
#region Отрисовываем оконтовку центра
Func Create_Draw_Area($pos, $rise)
Local $x = $pos[0]
Local $y = $pos[1]
Global $ScanWidth = $zoom, $ScanHeight = $zoom
Global $guiHide = GUICreate("", 0, 0, 0, 0, $WS_POPUP) ; Создаем окошечко для сокрытия курсора от приложения над которым он проходит
Global $childHide = GUICreate("hide", 2*$sHide, 2*$sHide, $x, $y, $WS_POPUP, -1, $guiHide) ; С этим дочерним именем в последствии и работаем для сокрытия курсора
GUISetState()
;;; Создаем четырмя окнами рамочку для оконтовки
Global $GUI = GUICreate("", 0, 0, $x, $y, $WS_POPUP) ; Материнское окно для остальных
Global $Top = GUICreate("Top Line", $ScanWidth, 2, $x, $y, $WS_POPUP, -1, $GUI) ; Ширина, Высота, Левый край, Верхний край, стиль, exStyle=-1, Идентификатор ранее созданного окна. Вновь создаваемое окно оказывается его потомком.
GUISetBkColor(0xFFffff)
GUISetState()
Global $Left = GUICreate("Left Line", 2, $ScanHeight, $x, $y, $WS_POPUP, -1, $GUI)
GUISetBkColor(0xFFffff)
GUISetState()
Global $Right = GUICreate("Right Line", 2, $ScanHeight, $x + $ScanWidth - 2, $y, $WS_POPUP, -1, $GUI)
GUISetBkColor(0xFFffff)
GUISetState()
Global $Bottom = GUICreate("Bottom Line", $ScanWidth, 2, $x, $y + $ScanHeight, $WS_POPUP, -1, $GUI)
GUISetBkColor(0xFFffff)
GUISetState()
;;; Завершаем инициализацию (создание из четырех окон) рамочки для оконтовки, прорисовываем её первый раз
EndFunc
Func Draw_Area()
;~ Sleep(80)
Local $x=$coord[0] + $side*$zoom/2 + $WinZoomDX - $zoom/2 + 1, $y=$coord[1] + $side*$zoom/2 + $WinZoomDY - $zoom/2 + 1
WinMove($Top, "", $x, $y, $ScanWidth, 1)
WinMove($Left, "", $x, $y, 1, $ScanHeight)
WinMove($Right, "", $x + $ScanWidth - 1, $y, 1, $ScanHeight)
WinMove($Bottom, "", $x, $y + $ScanHeight, $ScanWidth, 1)
WinSetOnTop($Top,"",1)
WinSetOnTop($Left,"",1)
WinSetOnTop($Right,"",1)
WinSetOnTop($Bottom,"",1)
EndFunc
#endregion Отрисовываем оконтовку центра
#Region - Создание и управление окном лога
Func CreateLogGUI()
$fLog = FileOpen($fLogName , 1)
If $fLog = -1 Then
MsgBox(0, "Error", "Файл лога не может быть открыт для записи.")
Exit
EndIf
FileWrite($fLog, @CRLF)
Local $MainGUI = GUICreate("My GUI", 0, 0, 0, 0, $WS_POPUP)
Global $UpTime = TimerInit()
Local $Log = GUICreate("Log", 600, 200, 1026, 228, $WS_SYSMENU , -1, $MainGUI)
Global $ListView = GuiCtrlCreateListView("GTime|LTime|Событие", 0, 0, 600, 200)
_GUICtrlListView_SetColumnWidth($Listview, 2, 600)
GUICtrlSetFont(-1, 10)
WinSetOnTop($Log,"",1)
GUICtrlSetBkColor($listview, 0x000000)
GUICtrlSetColor($listview, 0xFFFFFF)
GUISetState(@SW_SHOW)
Global $LogInfo
EndFunc
Func SaveLog()
Local $x = $coord[0]-$EVE_pos[0]-$b_size[0]
Local $y = $coord[1]-$EVE_pos[1]-$b_size[1]
if not $bAbs Then
$x -= $cKeyX
$y -= $cKeyY
UpdLog("[" & $x+$cKeyX & ", " & $y+$cKeyY & "] >>> Относительные (" & $x & ", " & $y & ") Цвет: " & Hex($color,6) & ' / Яркость: '& TrimColor($color))
Else
UpdLog("(" & $x & ", " & $y & ") Цвет: " & Hex($color,6) & ' / Яркость: '& TrimColor($color))
EndIf
FileWrite($fLog, $strLog & @CRLF)
EndFunc
Func SaveLogInput()
Local $x = $coord[0]-$EVE_pos[0]-$b_size[0]
Local $y = $coord[1]-$EVE_pos[1]-$b_size[1]
Local $answer = InputBox("Описание отметки", "Введите описание данной отметки:", "В этой точке ...", "", -1, -1, 0, 0)
UpdLog('Описание : '& $answer & ". (" & $x & ", " & $y & ") Цвет: " & Hex($color,6) & ' / Яркость: '& TrimColor($color))
FileWrite($fLog, $strLog & @CRLF)
$bAbs = False
$cKeyX = $x
$cKeyY = $y
EndFunc
Func UpdLog($Text=0)
If _GUICtrlListView_GetItemCount($listview) > 50 Then _GUICtrlListView_DeleteItem($listview, 0)
If $LogInfo <> $Text Then
$LogInfo = $Text
$strLog = @HOUR&':'&@MIN&':'&@SEC&"|"&StringFormat("%02d:%02d:%02d", _
Int(Round(TimerDiff($Uptime)/1000)/60/60), _
Int((Round(TimerDiff($Uptime)/1000)-Int(Round(TimerDiff($Uptime)/1000)/60/60)*3600)/60), _
Int(Round(TimerDiff($Uptime)/1000)-Int(Round(TimerDiff($Uptime)/1000)/60/60)*3600- _
Int((Round(TimerDiff($Uptime)/1000)-Int(Round(TimerDiff($Uptime)/1000)/60/60)*3600)/60)*60))&"| "& $LogInfo
GuiCtrlCreateListViewItem($strLog, $listView) ; Скролируем, чтобы всегда видеть последнее сообщение в списке (если в ручную не прокручивали, конечно)
EndIf
_GUICtrlListView_Scroll($listview,0,20)
EndFunc
Func TrimColor($TargetTrim)
#cs TrimarkColor - Comment Start
Исползуется для получения из цвета в формате RGB значение яркости пикселя. Возвращает значение от 0 до 255.
Скорость:
Функция выполняется за ~0.06-0.10 мс.
#ce TrimColor - Comment End
Dim $a, $as, $as1, $as2, $a_fin
$a = Hex($TargetTrim, 6)
$a_fin = (Dec(StringTrimRight($a, 4)) + Dec(StringTrimLeft(StringTrimRight($a, 2), 2)) + Dec(StringTrimLeft($a, 4)))/3
$TargetTrim = Round($a_fin, 0)
Return $TargetTrim
EndFunc
#EndRegion - Создание и управление окном лога
;;; Освобождаем ресурсы (попытка борьбы с утечкой памяти)
Func DisposeResources()
#region Освобождаем ресурсы
_GDIPlus_GraphicsDispose($hGraph)
_GDIPlus_ImageDispose($hBit)
_WinAPI_DeleteObject($pict)
#endregion Освобождаем ресурсы
#region Освобождаем ресурсы "прикрытия"
_GDIPlus_GraphicsDispose($hGraphHide)
_GDIPlus_ImageDispose($hBitHide)
_WinAPI_DeleteObject($pictHide)
#endregion Освобождаем ресурсы "прикрытия"
_GDIPlus_GraphicsDispose($hfreezeGraph) ; Освобождаем ресурсы глобального прикрытия
_GDIPlus_ImageDispose($hfreezeBit)
_WinAPI_DeleteObject($freezePict)
EndFunc
Func _Exit()
DisposeResources()
_GDIPlus_Shutdown()
FileClose($fLog)
ToolTip("")
Exit
EndFunc
GUI версии
Версия 0.42
История изменений:
v 0.4
Первая GUI версия
v 0.42
v 0.45 (от 30.09.2011):
Исправлены ошибки:
Первая GUI версия
- Теперь "`"(тильда) - "Замораживает"/"Размораживает" видимое отображение окна клиента
- Теперь CTRL+"`"(тильда)- Включение/Выключение воздействия курсора на приложение под ним
- Введен модульный (в несколько файлов) принцип построения программы
- Добавлен начальный GUI-интерфейс
v 0.42
- Исправлена ошибка в работе клика по координатам контрольной точки (расположенной ниже грида лога)
- Исправлена ошибка в работе кнопки "Перейти к координатам из строки лога"
- Команды с (тильда) и Ctrl+(тильда) перенесены на 'Scroll Lock' и Ctrl+'Scroll Lock' (потому, что я пользуюсь при наборе текста буквой 'ё')
- КТ теперь можно создавать по Alt+'`'(тильда), при этом вводить описание обязательно
- Alt+'Pause' теперь просто добавляет точку с описанием, не делая её контрольной
- Клик по описанию контрольной точки расположенному ниже списка лога вызывает переход на координаты последней ключевой точки
- Теперь можно указав строку лога, взять её как контрольную точку (создав новую строку), если описания в выбранной строчке нет - то необходимо будет ввести его
- При выборе строки в логе мы имеем возможность перейти на эти координаты
- Перед "заморозкой" теперь активируется окно клиента и на скрине больше не остается следов главной формы программы
v 0.45 (от 30.09.2011):
- Кодирование и проверка декодирования запомненных символов.
- Теперь измерение цвета под курсором динамическое, даже в том случае если не происходит перемещения мыши
- Добавлена возможность вычисления статистики по максимальному, минимальному значению цвета в выбранной точке, среднему значению и среднему квадратическому отклонению (сигма)
- Кодирование символов.
Исправлены ошибки:
- Исправлена ошибка "скачка" окна зума при приближении к краю экрана
Скрин версии 0.42

Управление для версии 0.45:
- "Pause" - сохранение в лог текущей позиции (если была задана хоть одна ключевая точка (КТ ), то дополнительно сохраняет координаты и относительно этой КТ)
- ALT+"Pause" - аналогично "Pause", но дополнительно необходимо ввести описание для точки
- ALT+"`"(тильда) - сохранение в лог текущих абсолютных координат с созданием КТ и описанием "что это?" (описание вводим сами)
- CTRL+"+" (на дополнительной клавиатуре) - Начать сбор статистики в точке под курсором
- CTRL+"-" (на дополнительной клавиатуре) - Закончить сбор статистики в указанной ранее точке и проанализировать результат
- CTRL+"Pause" - скрыть/показать окно Zoom'a
- ALT+CTRL+"Pause" - Выход
- CTRL+"*" (доп. клавиатура) - Изменение zoom'a (4x, 8x, 16x, 32x)
- ALT+"Курсорная клавиша" - сместить "прицел" zoom'a на одну точку в сторону
- CTRL+"Scroll Lock" - Включение/Выключение воздействия курсора на приложение под ним
- "Scroll Lock" - "Замораживает"/"Размораживает" видимое отображение окна клиента.
"Заморозить" - Снять скриншот с клиента и поместить поверх
"Разморозить" - Убрать скриншот с окна клиента
Изменения в 0.45 (от 30.09.2011):
- Кодирование и проверка декодирования запомненных символов.
- Теперь измерение цвета под курсором динамическое, даже в том случае если не происходит перемещения мыши
- Добавлена возможность вычисления статистики по максимальному, минимальному значению цвета в выбранной точке, среднему значению и среднему квадратическому отклонению (сигма)
Статистика собирается с указанной точки. При этом нахождения постоянно там курсора не требуется.
Исправлены ошибки:
- Исправлена ошибка "скачка" окна зума при приближении к краю экрана