Pixelsearch para area

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

Moderator: Gio

DiegoSouto
Posts: 22
Joined: 01 Apr 2021, 09:51

Pixelsearch para area

27 Sep 2021, 15:52

Gostaria de ajuda para definir uma função a um botão onde ele irar capturar a área de busca (x, y, w, h,) e irar retornar as informações capturara para uma variavel ou local exato do codigo do script como exemplo.

PixelSearch, FoundX, FoundY, 1181, 306, 1353, 333, 0xE8C05E, 0, Fast RGB

se possivel uma função que na hora que estiver selecionando a area fique igual a imagem abaixo.

https://prnt.sc/1tv3vts
User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Pixelsearch para area

27 Sep 2021, 16:56

Boa tarde DiegoSouto.

Gosto de usar um truque simples para selecionar áreas.

No código-exemplo abaixo você pode selecionar uma área segurando o botão do windows no seu teclado, e depois clicando e arrastando com o mouse. Ao soltar o botão do mouse as coordenadas referentes à área selecionada serão salvas em 4 variáveis (Pos_X_1, Pos_X_2, Pos_Y_1 e Pos_Y_2) e exibidas em um tooltip.

Code: Select all

#LButton::
CoordMode, Mouse, Screen
While GetKeyState("Lbutton","P")
{
	If (PosX = "")
	{
			MouseGetPos, PosX, PosY
			Pos_X_1 := PosX
			Pos_Y_1 := PosY
	}
	MouseGetPos, PosX, PosY
	Pos_X_2 := PosX
	Pos_Y_2 := PosY
	
	Gui 99: +AlwaysOnTop -Caption +Border +ToolWindow +LastFound
	Gui, 99: Color, CC0000
	WinSet, Transparent, 100
	W := Pos_X_2 - Pos_X_1
	H := Pos_Y_2 - Pos_Y_1
	Gui, 99: Show, x%Pos_X_1% y%Pos_Y_1% w%W% h%H%
	Sleep, 10
}
PosX := ""
PosY := ""
Gui, 99: Destroy
ToolTip, Área selecionada!`nCoordenadas:`nX1 = %Pos_X_1%`nY1 = %Pos_Y_1%`nX2 = %Pos_X_2%`nY2 = %Pos_Y_2%
Return


Naturalmente você pode facilmente, por exemplo, colocar uma linha de imagesearch posterior ao código (mas antes do return) para que cuide da busca da imagem na área selecionada.

Code: Select all

PixelSearch, FoundX, FoundY, %Pos_X_1%, %Pos_Y_1%, %Pos_X_2%, %Pos_Y_2%, 0xE8C05E, 0, Fast RGB

:arrow: Creio que possa entender sozinho o truque utilizado, mas deixar aqui explicado, nós basicamente criamos uma janela sem bordas, de cor vermelho transparente, com posição fixa no clique e que atualiza seu tamanho conforme o arraste. Quando soltamos o mouse, as posições finais são coletadas e a janela é então destruída (as posições iniciais já são as do clique).

Se quiser, também é possível fazer a área selecionada ser exibida através uma figura mais próxima à da foto, mas neste caso, teríamos que recorrer à GDIP para desenhar os contornos da figura do jeito que quisermos (o que seria mais trabalhoso, mas pode ser feito também). Por ora, prefiro a solução mais simples sempre que a mais complexa não trouxer muitos benefícios :beer:

Espero ter ajudado. Se tiver alguma dúvida, basta postar abaixo.

Return to “Ajuda e Suporte Geral”

Who is online

Users browsing this forum: No registered users and 6 guests