Моя собственная идея:
1. Найти сначала все точки с этим цветом
2. Сравнить расстояния и выбрать наиближнюю
на 1-ое я написал вот что:
Но оно не работает (точнее работает, но не так, как хотелось бы), и я даже не понимаю почему... :wacko:
Вообщем, эта функция должна вернуть 2D массив с координатами найденных точек. При написании учитывал то, что PixelSearch ищет сначала сверху вниз, затем слева направо. Я хотел, чтобы PixelSearch проверил сначала каждую вертикальную область, шириной в 1 пиксел, затем проверку начинал со следующей y-координаты от последней найденной точки.
1. Найти сначала все точки с этим цветом
2. Сравнить расстояния и выбрать наиближнюю
на 1-ое я написал вот что:
Код:
Func _AllPixelSearch ( $left, $top, $right, $bottom, $color , $shade = 0 )
Local $Value = 0, $CurrentPoint, $LastPoint [2] = [$left, $top]
Local $Points [1] [2]
For $iX = $left to $right - $left
For $iY = $top to $bottom - $top
$CurrentPoint = PixelSearch ( $left + $iX, $LastPoint [1] + 1, $right + $iX + 1, $top, $color , $shade)
If Not @error then
$Value += 1
ReDim $Points [1 + $Value] [2]
$Points [$Value] [0] = $CurrentPoint [0]
$Points [$Value] [1] = $CurrentPoint [1]
$LastPoint [0] = $CurrentPoint [0]
$LastPoint [1] = $CurrentPoint [1]
$iY = $LastPoint [1]
EndIf
Next
Next
If $Value > 0 then
$Points [0] [0] = $Value - 1
Else
$Points [0] [0] = $Value
EndIf
Return $Points
EndFunc
Но оно не работает (точнее работает, но не так, как хотелось бы), и я даже не понимаю почему... :wacko:
Вообщем, эта функция должна вернуть 2D массив с координатами найденных точек. При написании учитывал то, что PixelSearch ищет сначала сверху вниз, затем слева направо. Я хотел, чтобы PixelSearch проверил сначала каждую вертикальную область, шириной в 1 пиксел, затем проверку начинал со следующей y-координаты от последней найденной точки.