Тема: AHK+Photoshop: Картинка с прозрачными областями
Имеется файл TV_off.jpg:
Задача: сделать в картинке некоторые области прозрачными и отобразить её на экране.
Для работы нам потребуется программа Adobe Photoshop, в которой мы и откроем наше изображение.
Выделяем области, которые хотим сделать прозрачными (в данном случае — экран телевизора). Затем инвертируем выделение (Ctrl + Shift + I) и копируем выделенное в буфер обмена (Ctrl + C). Теперь создаём новый слой (Ctrl + Shift + N) и вставляем в него содержимое буфера (Ctrl + V). После этого выделяем слой "бэкграунд" и удаляем его. То, что получилось, сохраняем в формате png как TV_on.png:
Закрываем Photoshop, отменяя все действия (начальный файл остаётся без изменений).
Создаём ahk-скрипт:
Gui, +LastFound
Gui, Color, Blue ; любой цвет, которого нет в изображении
WinSet, TransColor, Blue
Gui, -Caption ; Удаляет "неклиентскую" часть окна.
; Эта команда только после WinSet, TransColor
Gui, Add, Pic, vOn x0 y0 Border, %A_ScriptDir%\TV_on.png ; картинка с прозрачной областью
Gui, Add, Pic, vOff x0 y0 Border, %A_ScriptDir%\TV_off.jpg ; картинка без неё перекрывает предыдущую
; опция "Border" необязательна, используется для того, чтоб были видны края изображения
Gui, Show
OnMessage(0x201, "WM_LBUTTONDOWN") ; чтоб можно было двигать окно левой кнопкой мыши
Return
GuiClose:
ExitApp
F10::
OnOff := !OnOff ; здесь значение OnOff переключается между false и true
GuiControl, % OnOff ? "Hide" : "Show", Off ; в зависимости от значения OnOff
Return ; картинка с именем переменной Off скрывается или показывается
WM_LBUTTONDOWN()
{
WM_NCLBUTTONDOWN := 0xA1, HTCAPTION := 2
PostMessage, WM_NCLBUTTONDOWN, HTCAPTION
}
Сохраняем скрипт в файл и помещаем в его папку оба наших файла с изображениями (TV_off.jpg и TV_on.png).
Запускаем скрипт. На экране появляется окно (перемещаемое левой кнопокой мыши) с изображением телевизора, который можно "включать" и "выключать", нажимая F10.
В архиве скрипт и оба файла с изображениями.