2016-12-31 4 views
1

Я с помощью PixelSearch функции, я знаю, как найти 1 пикселя, которые соответствуют моим критериям, но проблема в том, что я хотел бы найти все пикселей специфического цвета и добавить к массив, поэтому после того, как я смогу использовать его rand один и нажмите на него.Получить все пикселы расположение

код Источник:

Local $aCoord = PixelSearch(0, 0, $clientSize[0], $clientSize[1], 0x09126C, 10, 1, $hWnd) 
If Not @error Then 
    ; add to array and search next 
Else 
    GUICtrlSetData($someLabel, "Not Found") 
EndIf 

Я хочу найти всем пикселям, а не один "первый". Как я могу это сделать? Я что-то упускаю?

+0

Просьба указать код, который у вас есть. Возможно, код, который соответствует ключу? –

+0

Я не знал, что «autoit, pixelsearch, find all pixels вместо 1» было трудно понять, но okey я попытаюсь объяснить его более точно ... – ulou

+0

Я думаю, что любое простое решение Autoit скорее всего будет довольно медленным – Richard

ответ

3

Этот не может быть выполнен с использованием PixelSearch, поскольку он прекращает выполнение, когда найден соответствующий пиксель.

Это может быть сделано путем петли PixelGetColor над вашим районом. Что-то вроде:

For $x = 0 To $clientSize[0] Step 1 
    For $y = 0 To $clientSize[1] Step 1 
     If PixelGetColor($x,$y,$hWnd) = 0x09126C Then 
     ;Add $x and $y to Array using _ArrayAdd() (or whatever you prefer) 
     EndIf 
    Next 
Next 

Это может чувствовать себя медленнее, чем PixelSearch, потому что теперь он должен сканировать всю область, вместо того чтобы останавливаться в первом матче, но это не должно быть, так как PixelSearch основан на том же принципе.

+0

Может быть возможно быстрее реализовать что-то более быстрое: https://www.autoitscript.com/forum/topic/126430-advanced-pixel-search-library/ – Richard

Смежные вопросы