Hallo, ich bastel grade an der _FindAllPixel UDF.
Was macht die UDF?
- Diese sucht nach allen Pixel (d.h. man kann prüfen ob mehrere von den Pixel da sind).
Problem?
- Das Problem liegt darin, dass zuviele "Checks" (ConsoleWrite("Checked!" & $iResults & @CRLF)) ausgegeben werden, somit kommt das Programm nicht zum Ende, was ich lediglich haben will.
- Bei mir wurden schon über 60.000 Pixel gefunden, dass kann aber doch nicht stimmen?
Hier ist die UDF:
_FindAllPixel
$iItems = _FindAllPixel(0x000000, 76, 69, 1019, 606)
If Not $iItems <= 0 Then
MsgBox(64, "Pixel", "Soviele Pixel von der gleichen Art wurden im Bereich gefunden:" & @CRLF & $iItems)
EndIf
Func _FindAllPixel($hColor, $ileft, $itop, $iright, $ibottom, $iShadeVar = 15)
Local $iResults = 0
If IsString($hColor) Then Return 0
If IsString($ileft) Then Return 0
If IsString($iright) Then Return 0
If IsString($itop) Then Return 0
If IsString($ibottom) Then Return 0
If IsString($iShadeVar) Then Return 0
Do
$iTimeS = TimerInit() ;Zeitstempel erstellt, falls nach einer bestimmten Zeit kein Pixel gefunden worden ist.
$cSearchResults = PixelSearch($ileft, $itop, $iright, $ibottom, $hColor, $iShadeVar)
If IsArray($cSearchResults) Then
$iResults += 1
ConsoleWrite("Checked! " & $iResults & @CRLF)
$ileft = $cSearchResults[0]
$itop = $cSearchResults[1]
$iTimeS = TimerInit()
Else
ConsoleWrite("Unchecked! " & $iResults & @CRLF)
If Round(TimerDiff($iTimeS) / 1000) >= 3 Then Return $iResults
EndIf
Until $ileft >= $iright Or $itop >= $ibottom
Return $iResults
EndFunc
Mit freundlichen Grüßen
Understood