<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK+Photoshop: Картинка с прозрачными областями]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=3998&amp;type=atom" />
	<updated>2009-12-17T15:00:36Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=3998</id>
		<entry>
			<title type="html"><![CDATA[AHK+Photoshop: Картинка с прозрачными областями]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=31603#p31603" />
			<content type="html"><![CDATA[<p>Имеется файл TV_off.jpg:<br /><span class="postimg"><img src="http://i.imgur.com/uANq0TZ.jpg" alt="http://i.imgur.com/uANq0TZ.jpg" /></span></p><p>Задача: сделать в картинке некоторые области прозрачными и отобразить её на экране.</p><p>Для работы нам потребуется программа Adobe Photoshop, в которой мы и откроем наше изображение.<br />Выделяем области, которые хотим сделать прозрачными (в данном случае — экран телевизора). Затем инвертируем выделение (Ctrl + Shift + I) и копируем выделенное в буфер обмена (Ctrl + C). Теперь создаём новый слой (Ctrl + Shift + N) и вставляем в него содержимое буфера (Ctrl + V). После этого выделяем слой &quot;бэкграунд&quot; и удаляем его. То, что получилось, сохраняем в формате png как TV_on.png:<br /><span class="postimg"><img src="http://i.imgur.com/t3TDfI0.png" alt="http://i.imgur.com/t3TDfI0.png" /></span></p><p>Закрываем Photoshop, отменяя все действия (начальный файл остаётся без изменений).<br />Создаём ahk-скрипт:<br /></p><div class="codebox"><pre><code>   Gui, +LastFound
   Gui, Color, Blue   ; любой цвет, которого нет в изображении
   WinSet, TransColor, Blue

   Gui, -Caption      ; Удаляет &quot;неклиентскую&quot; часть окна.
                      ; Эта команда только после 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    ; картинка без неё перекрывает предыдущую
   ; опция &quot;Border&quot; необязательна, используется для того, чтоб были видны края изображения

   Gui, Show
   OnMessage(0x201, &quot;WM_LBUTTONDOWN&quot;)      ; чтоб можно было двигать окно левой кнопкой мыши
   Return

GuiClose:
   ExitApp

F10::
   OnOff := !OnOff   ; здесь значение OnOff переключается между false и true
   GuiControl, % OnOff ? &quot;Hide&quot; : &quot;Show&quot;, Off   ; в зависимости от значения OnOff
   Return            ; картинка с именем переменной Off скрывается или показывается


WM_LBUTTONDOWN()
{
   WM_NCLBUTTONDOWN := 0xA1, HTCAPTION := 2
   PostMessage, WM_NCLBUTTONDOWN, HTCAPTION
}</code></pre></div><p>Сохраняем скрипт в файл и помещаем в его папку оба наших файла с изображениями (TV_off.jpg и TV_on.png).<br />Запускаем скрипт. На экране появляется окно (перемещаемое левой кнопокой мыши) с изображением телевизора, который можно &quot;включать&quot; и &quot;выключать&quot;, нажимая F10.</p><p>В архиве скрипт и оба файла с изображениями.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2009-12-17T15:00:36Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=31603#p31603</id>
		</entry>
</feed>
