<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK+Photoshop: Картинка с прозрачными областями]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=3998</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=3998&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK+Photoshop: Картинка с прозрачными областями».]]></description>
		<lastBuildDate>Thu, 17 Dec 2009 15:00:36 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[AHK+Photoshop: Картинка с прозрачными областями]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=31603#p31603</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Thu, 17 Dec 2009 15:00:36 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=31603#p31603</guid>
		</item>
	</channel>
</rss>
