<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Поиск ближайшей картинки отталкиваясь от центра окна.]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=14185</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=14185&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Поиск ближайшей картинки отталкиваясь от центра окна.».]]></description>
		<lastBuildDate>Sun, 23 Sep 2018 01:59:32 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Поиск ближайшей картинки отталкиваясь от центра окна.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=128825#p128825</link>
			<description><![CDATA[<p>Изображения вставляются в сообщения при помощи соответствующего тега.</p><p>Тогда, на ум приходит только получение рейтинга удалённости точек от центра, путём сложения их разницы, после чего, переместить курсор по их координатам в порядке возрастания. Для начала, потребуется найти все точки. Воспользуемся решением от <a href="http://forum.script-coding.com/viewtopic.php?pid=111256#p111256"><strong>serzh82saratov</strong></a>:<br /></p><div class="codebox"><pre><code>
#SingleInstance Force 
#NoEnv
ListLines Off
SetBatchLines -1
SetTitleMatchMode, 2
CoordMode, Pixel
CoordMode, Mouse

Global center_x, center_y, rateArr := {}, order := []

F1::
	WinGetPos, win_x, win_y, win_w, win_h,Тайтл окна, в котором производится поиск
	center_x:= win_x + win_w // 2, center_y:= win_y + win_h // 2, srch_w := win_x + win_w, srch_h := win_y + win_h
	dataArray := SeveralSearch(win_x, win_y, srch_w, srch_h, [&quot;chest.png&quot;], 50)

	Loop,% len := dataArray.Length()
		SetRateItem(dataArray[ A_Index ])

	Loop,% len
		MouseMove, rateArr[ order[ A_Index ] ][1], rateArr[ order[ A_Index ] ][2]	
return

SeveralSearch(ix1, iy1, w, h, files, variation = 0)  { 
	Coords := []
	For k, file in files
	{
		x1 := ix1, y1 := iy1, x2 := ix1 + w - 1, y2 := iy1 + h - 1
		prY := y2, ErrorCount := 0
		Loop
		{
			ImageSearch, mX, mY, x1, y1, x2, y2, *%variation% %file%
			If (ErrorLevel &amp;&amp; ++ErrorCount &gt; 1)
				Break
			If (mY = &quot;&quot; || mY &gt; prY)
				x1 := ix1, y1 += 1, prY := y2
			Else
				x1 := mX + 1, ErrorCount := 0, y1 := mY, prY := mY, Coords.Push([mX, mY])
		}
	} 
	Return Coords
}
SetRateItem(item) {
	a := center_x &lt; item[1] ? item[1] - center_x : center_x - item[1]
	b := center_y &lt; item[2] ? item[2] - center_y : center_y - item[2]
	rateArr[rate := a + b] := item, doInsert := true
	
	Loop,% order.Length(){
		if (rate &lt;= order[ A_Index ]) {
			order.InsertAt(A_Index, rate)
			doInsert := false
			break
		}
	} (doInsert &amp;&amp; order.Push(rate))
}
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (KusochekDobra)]]></author>
			<pubDate>Sun, 23 Sep 2018 01:59:32 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=128825#p128825</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Поиск ближайшей картинки отталкиваясь от центра окна.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=128819#p128819</link>
			<description><![CDATA[<p><strong>KusochekDobra</strong> Спасибо за ответ, Ваш скрипт работает хорошо, но я не совсем это имел введу, искомый объект не обязательно находится справа вниз от начальной точки. Объекты могут появляться в любой области окна, но отправная точка с центра и надо дотянутся до ближайшего искомого объекта. Возможно стоит каким-то образом задавать квадрат поиска от центра и постепенно его увеличивать до размеров окна?<br />Прикрепил картинку для более наглядного понимания задачи.<br /></p><div class="quotebox"><cite>KusochekDobra пишет:</cite><blockquote><p>И ещё, важно понимать, что название темы относится к поиску относительно экрана, а в тексте идёт речь об окне. Это усложняет понимание того, что, Вам, конкретно нужно. Будьте внимательней впредь.</p></blockquote></div><p>Название темы поправил, да действительно действия происходят в окне.</p>]]></description>
			<author><![CDATA[null@example.com (Military)]]></author>
			<pubDate>Sat, 22 Sep 2018 14:35:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=128819#p128819</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Поиск ближайшей картинки отталкиваясь от центра окна.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=128817#p128817</link>
			<description><![CDATA[<p>Если ищете в окне и поиск должен начинаться с его середины, то, вначале нужно уточнить, что с середины - поиск будет осуществляться в одной четвёртой от площади этого окна, при том, самой последней в порядке сверху-вниз и слева-направо. Для этого, нужно узнать ширину и высоту окна и поделив значения пополам, прибавить к координатам положения окна на экране и установить результат операций в качестве начальной точки, а делимые значения, так же сложенные со значениями положения, конечной:<br /></p><div class="codebox"><pre><code>
#SingleInstance, Force
#NoEnv

CoordMode, Pixel
CoordMode, Mouse
SetTitleMatchMode, 2

F1::
	WinGetPos, win_x, win_y, win_w, win_h,Тайтл окна, в котором производится поиск
	srch_x := win_x + win_w // 2, srch_y := win_y + win_h // 2, srch_w := win_x + win_w, srch_h := win_y + win_h
	Loop {
		ImageSearch, xp, yp, srch_x, srch_y, srch_w, srch_h, *50 chest.png
		Sleep, 200
		If (xp)
			Break
	}
	MouseMove, xp, yp
return
Esc::
	ExitApp
</code></pre></div><p>И ещё, важно понимать, что название темы относится к поиску относительно экрана, а в тексте идёт речь об окне. Это усложняет понимание того, что, Вам, конкретно нужно. Будьте внимательней впредь.</p>]]></description>
			<author><![CDATA[null@example.com (KusochekDobra)]]></author>
			<pubDate>Sat, 22 Sep 2018 13:52:31 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=128817#p128817</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Поиск ближайшей картинки отталкиваясь от центра окна.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=128812#p128812</link>
			<description><![CDATA[<p>Возникла проблема при создании простого скрипта с поиском картинки. <br />Есть такой скрипт.<br /></p><div class="codebox"><pre><code>F1::
Loop,
{
ImageSearch, xp, yp, 0, 0, 600, 800, *50 chest.png
Sleep 200
If xp &gt; 0
Break
}
MouseMove, xp, yp
Click (by itself)</code></pre></div><p>Работает он хорошо, но есть одна проблема, он начинает искать с левого верхнего угла до правого нижнего, а мне нужно искать отталкиваясь от середины окна, и находить ближайшее совпадение.</p>]]></description>
			<author><![CDATA[null@example.com (Military)]]></author>
			<pubDate>Sat, 22 Sep 2018 09:27:39 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=128812#p128812</guid>
		</item>
	</channel>
</rss>
