Procurar por imagens em coordendas Topic is solved

Tire suas dúvidas sobre programação em AutoHotkey

Moderator: Gio

User avatar
Hologram
Posts: 129
Joined: 06 May 2020, 16:47

Procurar por imagens em coordendas

01 Jun 2020, 09:47

Eu sempre usei a linha

Code: Select all

ImageSearch, PosX, PosY, 0, 0, %A_ScreenWidth%, %A_ScreenHeight%, %A_ScriptDir%/pot1.png
dá pra entender perfeitamente que cobre a tela toda, mas e se eu quiser procurar por coordendas?

Tipo, levando em consideração que só da pra colocar somente 2 posições de XY como isso formaria um quadrado?
Ai eu tentei alterar um pouco isso, mas não tive sucesso:

Code: Select all

F1::

POS_X1 := PosX+14, PosY+156 ; Posição Esquerda Superior
POS_X2 := PosX+1001, PosY+169 ; Posição Direita Superior
POS_Y1 := PosX+17, PosY+685 ; Posição Esquerda Inferior
POS_Y2 := PosX+1011, PosY+683 ; Posição Direita Infeior
ImageSearch, FoundX, FoundY, %POS_X1%,%POS_X2%, %POS_Y1%, %POS_Y2%, %A_ScriptDir%/pot1.png
if (ErrorLevel = 0)
	{	
		MsgBox, Sucess!
	}
return
search.png
search.png (5.01 KiB) Viewed 497 times
User avatar
Gio
Posts: 1068
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Procurar por imagens em coordendas  Topic is solved

01 Jun 2020, 11:34

Bom dia Hologram.

Uma área em forma de quadrado ou retângulo na tela pode ser formada com as coordenadas de apenas 2 pontos (superior-esquerdo e inferior-direito). Isso ocorre porque cada um desses pontos corresponde a uma quina oposta em diagonal e é formado por duas coordenadas (X e Y).

Dessa forma, as outras duas quinas da área podem ser deduzidas intercalando os valores XY das quinas informadas.

:arrow: Estude com atenção a figura abaixo para entender como funcionam as coordenadas.

COORDENADAS AREA DESCRICAO.png
COORDENADAS AREA DESCRICAO.png (9.13 KiB) Viewed 476 times

-------------------------------------------------------------------------

Hologram wrote:

Code: Select all

POS_X1 := PosX+14, PosY+156 ; Posição Esquerda Superior
POS_X2 := PosX+1001, PosY+169 ; Posição Direita Superior
POS_Y1 := PosX+17, PosY+685 ; Posição Esquerda Inferior
POS_Y2 := PosX+1011, PosY+683 ; Posição Direita Infeior
Não entendi o que você tentou fazer acima. Na sintaxe do AutoHotkey quando você coloca uma vírgula após uma expressão com operador :=, você está dizendo que em seguida vem outra expressão independente. Assim, na primeira linha do código acima, você está apenas colocando o resultado de PosX + 14 dentro da variável Pos_X1. A outra porção não terá qualquer influência em Pos_X1.

Além disso, para que o cálculo funcione, é necessário que PosX contenha uma valor numérico (pois não faz sentido TEXTO+14 ou EM_BRANCO+14 - Na programação zero não é o mesmo que em branco!)

:arrow: DICA: Sempre que estiver elaborando seu código e encontrar um erro, verifique os valores das variáveis linha a linha para ver onde eles saíram do planejado. Você pode fazer isso colocando uma linha de msgbox ou ToolTip temporariamente logo após a linha que mexeu na variável.

Exemplo:

Code: Select all

POS_X1 := PosX+14, PosY+156 ; Posição Esquerda Superior
msgbox % POS_X1 ; Esta msgbox permitira saber se a expressão acima ocorreu conforme planejado. Você pode remover a linha depois de fazer o teste.
POS_X2 := PosX+1001, PosY+169 ; Posição Direita Superior
msgbox % POS_X2 ; Esta msgbox permitira saber se a expressão acima ocorreu conforme planejado. Você pode remover a linha depois de fazer o teste.
POS_Y1 := PosX+17, PosY+685 ; Posição Esquerda Inferior
msgbox % POS_Y1 ; Esta msgbox permitira saber se a expressão acima ocorreu conforme planejado. Você pode remover a linha depois de fazer o teste.
POS_Y2 := PosX+1011, PosY+683 ; Posição Direita Infeio
msgbox % POS_Y2 ; Esta msgbox permitira saber se a expressão acima ocorreu conforme planejado. Você pode remover a linha depois de fazer o teste.

Depois que tiver feito a verificação dos valores, você pode apagar as linhas de msgbox ou tooltip.

Return to “Ajuda e Suporte Geral”

Who is online

Users browsing this forum: No registered users and 1 guest