Что нового

нужно найти прямоугольник 4*2 определенного цвета в колонке

stormovik

Новичок
Сообщения
58
Репутация
1
нужно найти прямоугольник 4*2 определенного цвета в колонке
использую следующую конструкцию
Код:
For $i = 60 To 100
   For $j = 100 To 250 ; провожу поиск по вертикали
	  $coor = PixelSearch($i,$j,$i,$j,0xcccccc) ; проверяю первый пиксель
	  $coor2 = PixelSearch($coor[0]+3, $coor[1]+1,$coor[0]+3, $coor[1]+1  ,0xcccccc) ; проверяю, совпадает ли цвет пикселя "по диагонали"
	  If Not @error Then ExitLoop ; если совпадает, то выходим
   Next
Next


проблем две:
выдает ошибку
Код:
... (4) : ==> Subscript used with non-Array variable.:
$coor2 = PixelSearch($coor[0]+3, $coor[1]+1,$coor[0]+3, $coor[1]+1  ,0xcccccc)
$coor2 = PixelSearch($coor^ ERROR
и можно ли это сделать попроще?
 

sss

Продвинутый
Сообщения
332
Репутация
96
Ошибку выдает, потому что PixelSearch выдает не массив, а значит не может найти цвет. И вообще, по-моему с этой функцией надо по-другому работать:
Код:
PixelSearch ( left, top, right, bottom, color [, shade-variation [, step [, hwnd]]] )
left - левая граница
top - верхняя граница
right - правая граница
bottom - нижняя граница

Возвращаемые значения:
Успех - массив с координатами (arr[0]=x, arr[1]=y)
Неудача - 0

Вот, набросал на скорую руку. В этой области далеко не профи, так что могут быть варианты лучше
Код:
$color=0x000000
$ps1=PixelSearch(60, 100, 100, 250, $color) ; ищем $color в области x1=60 y1=100, x2=100 y2=250
if IsArray($ps1) Then
	if PixelGetColor($ps1[0]+3, $ps1[1]+1)=$color Then ; если цвет пикселя равен $color
		ExitLoop ; выходим 
	EndIf
EndIf
 
Верх