Ich versuche, einen Fill Flood-Algorithmus zu verwenden, um ein Cube-Malwerkzeug für eine App zu erstellen.
Dies ist der Code des Algorithmus:
%Vor%}
Dies ist der Teil, wo ich das Touch-Ereignis in meinem ImageView behandle:
%Vor%Das Problem ist, dass die Koordinaten nicht genau sind. Ich meine, wo immer ich das Bild berühre, wird es in einem anderen Teil gemalt, in dem ich es nicht habe.
Muss ich meine Ereigniskoordinaten behandeln, bevor ich sie an den Filler-Algorithmus sende? Ich habe auch ein Vollbild probiert und das passiert immer.
Jede Hilfe ist willkommen!
Ihre Situation hat mich daran erinnert, dass dieser Blog-Beitrag so gut wie möglich ist sei das gleiche Problem, das er dort behoben hat. Er musste die Transformation berücksichtigen, die das Bitmap durchlaufen hat, bevor es in ImageView eingefügt wurde.
Anstatt nur getX()
und getY()
für das Ereignis in seinem OnTouchListener
zu verwenden, verwendete er getPointerCoords(event)[0]
bzw. getPointerCoords(event)[1]
und erstellte diese Methode:
Beachten Sie, dass dies eine Lösung für Sie ist - Sie können die getImageMatrix()
-Methode für Ihre imagen
-Variable in der Methode verwenden oder die Matrix in einer endgültigen Variablen speichern und in OnTouchListener
verwenden.
Beachten Sie auch, dass, wenn das das Problem war, Sie die Umwandlung auch berücksichtigen sollten, wenn Sie FillFlood
einrichten, um die Dimensionen entsprechend zu konstruieren (das würde bedeuten, dass Ihr vorheriger Versuch zu einer zu großen / kleinen Matrix im Vergleich zu die ursprüngliche Bitmap).
Und alles in einem für Sie (eine Möglichkeit, diese Lösung zu verwenden):
%Vor%Hoffe, dass es das löst.
Tags und Links algorithm java android coordinates flood-fill