Como usar o comando referente a cor do pixel da posição do mouse?

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

Moderator: Gio

gabrielquaglio
Posts: 6
Joined: 22 Nov 2021, 21:50

Como usar o comando referente a cor do pixel da posição do mouse?

Post by gabrielquaglio » 26 Sep 2022, 23:13

já sei o codigo da cor e a posição do mouse, não quero saber como conseguilas, quero saber como usar o comando ja tendo o codigo HEX ou RGB da cor, quero o seguinte.

"se a posição "x" do mouse for igual a um pixel da cor branca, mostre mensagem x, se não, mostre mensagem "y"

simples assim


estou tentando sem sucesso.

Code: Select all

f2::
MouseMove 949, 161

If (MouseGetPos, 949, 161 = 0xFFFFFF)
  {
     msgbox, you win
        }
else
   {
      msgbox, you lose
         }
return
[Mod edit: [code][/code] tags added.]
Last edited by gregster on 26 Sep 2022, 23:16, edited 1 time in total.
Reason: Topic moved from 'Scripts e Funções'.

User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Como usar o comando referente a cor do pixel da posição do mouse?

Post by Gio » 27 Sep 2022, 10:17

Bom dia Gabrielquaglio.

Seja bem-vindo ao fórum da comunidade do AutoHotkey.

Apesar de ter dito que sim, seu código não está obtendo a cor na posição do mouse. A linha If (MouseGetPos, 949, 161 = 0xFFFFFF) não é possível, pois comandos não podem ser chamados de dentro de condicionais e também não retornam valores como se fossem funções. Ademais o comando MouseGetPos não retorna código de cor, retorna apenas a posição do mouse, então você precisa chamar depois dele o PixelGetColor para isso.

Code: Select all

MouseGetPos, PosX, PosY
PixelGetColor, COR_ENCONTRADA, %PosX%, %PosY%

:arrow: Agora vamos à parte que você queria saber: supondo que rodando o código acima você encontrou a cor na posição do mouse e que ela está na variável COR_ENCONTRADA, então como descobrir se essa cor é "branco"?

Simples, a cor branca pura é aquela onde todos os canais de cor estão em seus valores máximos, pois no sistema aditivo de cores, o branco é a unão de todas as cores. Logo, ao código do branco em hexadecimal é 0xFFFFFF (pois FF é igual ao valor máximo de um byte, ou seja 255, em base hexadecimal).

PORÉM tome cuidado que muitas cores "brancas" na verdade são diferentes "tons de branco", ou seja, cores com códigos próximos a 0xFFFFFF também podem ser descritas de maneira subjetiva como "branco". Portanto, se você quiser encontrar um "branco de qualquer tom possível", você terá que testar os canais de cores dentro de uma margem de valor máximo e mínimo atribuída por você. Um exemplo é aceitar "até 5" variações de tom em cada canal, situação onde o valor pode ser qualquer coisa entre 0xFBFBFB e 0xFFFFF e ainda sim ser considerado "branco".

Post Reply

Return to “Ajuda e Suporte Geral”