1 (изменено: lukas_endigo_91, 2015-12-02 20:31:06)

Тема: AHK: Диапазон цветов

Всем доброго времени суток! Есть "диапазон цветов" в RGB:
RED = от 90 до FF;
GREEN = от 10 до 50;
BLUE = от 20 до 50.

Получается с помощью команды:

PixelGetColor, dimColor, 500, 500, RGB

Получаю цвет в переменную dimColor. К примеру в %dimColor% цвет 0хA42135, это значит что он в "диапазон цветов" и выполняет дальше код.
Помогите пожалуйста как мне сделать функцию или формулу для "диапазона цветов". Не обижайтесь если что не понятно и не правильно написал, объяснил как смог.

2

Re: AHK: Диапазон цветов

Вроде работает...

...

Подправил:

#SingleInstance,Force

colormin:=0x901020
colormax:=0xff5050

loop
{
  mousegetpos,x,y
  PixelGetColor, Color, % x, % y, RGB

  if incolors(Color,colormin,colormax)
    tooltip,% Color
}

incolors(Color,colormin,colormax)
{
  if (Color&0xff0000>(colormin&0xff0000)-1 and Color&0xff0000<(colormax&0xff0000)+1
  and Color&0x00ff00>(colormin&0x00ff00)-1 and Color&0x00ff00<(colormax&0x00ff00)+1
  and Color&0x0000ff>(colormin&0x0000ff)-1 and Color&0x0000ff<(colormax&0x0000ff)+1)
    return 1
}
Win 7 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

3

Re: AHK: Диапазон цветов

Alectric
Спасибо, работает. Подскажите пожалуйста мне еще одну вещь. Получается данный код следит за указателям, в идеале он должен проверять горизонтальную линию из пикселей от 128px по 252px (диапазон пикселей), то есть следить за определенным участком и при совпадении "диапазон цветов" должен выполнить код.

4

Re: AHK: Диапазон цветов

lukas_endigo_91, этот велосипед уже изобретён. Команды называются PixelSearch и ImageSearch.

5

Re: AHK: Диапазон цветов

Вот так как-то:

#SingleInstance,Force
setbatchlines,-1
CoordMode,Pixel
CoordMode,ToolTip

colormin:=0x901020
colormax:=0xff5050
;colormin:=0x000000
;colormax:=0xffffff

f1::
if ColorsLine(100,100,colormin,colormax,"x",100) ; начальная точка x=100, y=100,colormin,colormax,сканировать по x или y,сколько пикселей сканировать=100
  tooltip,Совпало
else
  tooltip,Облом.
return


ColorsLine(x,y,colormin,colormax,xy="x",count=1)
{
  loop,% count
  {
    if (a_index>count)
      break
    PixelGetColor,Color,% xy="x" ? x+a_index : x,% xy="y" ? y+a_index : y, RGB

tooltip,% "Отладка`n" Color,% xy="x" ? x+a_index+5 : x+5,% xy="y" ? y+a_index+5 : y+5

    if !incolors(Color,colormin,colormax)
      return 0
  }
  return 1
}

incolors(Color,colormin,colormax)
{
  if (Color&0xff0000>(colormin&0xff0000)-1 and Color&0xff0000<(colormax&0xff0000)+1
  and Color&0x00ff00>(colormin&0x00ff00)-1 and Color&0x00ff00<(colormax&0x00ff00)+1
  and Color&0x0000ff>(colormin&0x0000ff)-1 and Color&0x0000ff<(colormax&0x0000ff)+1)
    return 1
}

Чтобы увеличить скорость - нужно отключить "Аэро", если Win7.

Win 7 x64
AHK v1.1.33.02
                       Справка тебе в помощь.