PixelSearch mit Ausnahmen

11/01/2014 13:55 Moneypulation#1
Also das ist mein Bildschirm:

[Only registered and activated users can see links. Click Here To Register...]


Ich möchte einen PixelSearch durchlaufen lassen, der nur den grünen Bereich nach dem blauen Pixel durchsucht. Dieser blaue Pixel könnte überall im grünen Bereich sein. Aber die roten Objekte machens mir schwer, denn sie ergeben kein Muster, sondern sind zufällig an irgendwelchen Positionen. Die Positionen sind mir jedoch bekannt. Nun ist meine Frage, wie ich bloß den grünen Bereich (möglichst schnell) nach dem blauen Pixel durchsuchen lassen kann.

lg money
11/01/2014 14:15 alpines#2
Wo ist das Problem? Du erzeugst einfach Rechtecke die den grünen Flächen entsprechen.
Die PixelSearchst du alle.
11/01/2014 14:22 Moneypulation#3
Quote:
Originally Posted by alpines View Post
Wo ist das Problem? Du erzeugst einfach Rechtecke die den grünen Flächen entsprechen.
Die PixelSearchst du alle.
Wie sieht das dann ungefähr als Code aus?
11/01/2014 15:39 alpines#4
Wenn du es nicht selber versuchst, kommst du nie weiter.
11/01/2014 21:44 YatoDev#5
FastFind.dll
11/02/2014 21:22 FacePalmMan#6
z.b: Area = (0,0) bis (300,300)
Rote Area = (100,100) bis (200,200)
Code:
Pixelsearch(0, 0, 100, 300, iColor)
Pixelsearch(0, 0, 300, 100, iColor)
Pixelsearch(300, 0, 300, 300, iColor)
Pixelsearch(0, 300, 300, 300, iColor)

Bei mehreren Objekten wäre das eher schwieriger, weswegen ich da die Arbeit mit Memory-editing bevorzugen würde (Wenn du willst, bringe ich dir das kostenlos bei).
11/02/2014 21:34 Moneypulation#7
Quote:
Originally Posted by FacePalmMan View Post
z.b: Area = (0,0) bis (300,300)
Rote Area = (100,100) bis (200,200)
Code:
Pixelsearch(0, 0, 100, 300, iColor)
Pixelsearch(0, 0, 300, 100, iColor)
Pixelsearch(300, 0, 300, 300, iColor)
Pixelsearch(0, 300, 300, 300, iColor)

Bei mehreren Objekten wäre das eher schwieriger, weswegen ich da die Arbeit mit Memory-editing bevorzugen würde (Wenn du willst, bringe ich dir das kostenlos bei).
Ja mit mehreren Objekten wird das komplizierter. Und nein danke, hab schon einen Workaround gefunden
11/03/2014 00:34 KDeluxe#8
Einfach eine Methode schreiben, welcher man ein Array an exklusiven Rechtecken und die Gesamtfläche mitteilt. Diese Methode gibt wiederum ein Array mit den daraus resultierenden Rechtecken zurück. Die Array müssen natürlich zweidimensional sein (x, y, höhe, breite). Das Ergebnis gehst du in einer For-Schleife mit PixelSearch() durch. Einfache Mathematik, mehr als simple Addition und Subtraktion wird nicht benötigt.
11/03/2014 12:29 YatoDev#9
Quote:
Originally Posted by KDeluxe View Post
Einfach eine Methode schreiben, welcher man ein Array an exklusiven Rechtecken und die Gesamtfläche mitteilt. Diese Methode gibt wiederum ein Array mit den daraus resultierenden Rechtecken zurück. Die Array müssen natürlich zweidimensional sein (x, y, höhe, breite). Das Ergebnis gehst du in einer For-Schleife mit PixelSearch() durch. Einfache Mathematik, mehr als simple Addition und Subtraktion wird nicht benötigt.
schöne idee.
Mit einem screenshot und einer bitmap im speicher kann man die lockbits methode verwenden. dann hat man ein array mit den farben (argb!).
Dann vergleicht man in einer for schleife einfach jedes array element(die werte sind argb also vergleicht man nur das rgb. das geht mit string operationen oder bit operationen) und überspringt die bereiche mit den rechtecken.
Ist schneller als 5 mal pixelsearch

oder man greift auf fertige lösungen zurück.
Die fastfind.dll hat das alles schon implementiert
11/03/2014 14:05 Devsome#10
11/05/2014 14:19 FacePalmMan#11
Quote:
Originally Posted by Devsome View Post
Es ist (wie der Tremaux Algorithmus) für Labyrinthe gedacht.
Beispiel: [Only registered and activated users can see links. Click Here To Register...]
11/05/2014 17:10 Devsome#12
Quote:
Originally Posted by FacePalmMan View Post
Es ist (wie der Tremaux Algorithmus) für Labyrinthe gedacht.
Beispiel: [Only registered and activated users can see links. Click Here To Register...]
Nur das der A* Algorithmus schneller ist.
Verbessert mich wenn ich falsch liege
11/05/2014 18:43 FacePalmMan#13
Quote:
Originally Posted by Devsome View Post
Nur das der A* Algorithmus schneller ist.
Verbessert mich wenn ich falsch liege
Es ist ein Path-finding Algorithmus. Was gebraucht wird, wäre etwas was nur den grünen Bereich scannt.
Eine bessere Idee wäre um die letzten Koordinaten des blauen Kastens herum zu suchen, oder beim Pixelsearch den Step-parameter hochzuschrauben.

PixelSearch ( left, top, right, bottom, color [, shade-variation = 0 [, step = 1 [, hwnd]]] )
11/06/2014 15:59 KDeluxe#14
Man kann aber auch einfach die FastFind UDF verwenden und die FFAddExcludedArea() Funktion nutzen.