ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
1596
1596
EMPFEHLEN
-
Hi,
ich stehe grade vor einem kleinen Problem und denke das ich es Falsch angehe.
Also ich habe einen ScreenShot von einem Programm, und will nun die X / Y Koordinate von einem Button bekommen, von diesem Button habe ich ein Bild welches ich erstmal in eine PictureBox geladen habe.
Hier der Quellcode:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
Bitmap tmp = new Bitmap("C:\\FindButton.bmp"); Bitmap button1 = (Bitmap)pictureBox1.Image; int b1Treffer = 0; for (int x = 0; x < tmp.Width; x++) { for (int y = 0; y < tmp.Height; y++) { if (tmp.GetPixel(x, y) == button1.GetPixel(0, 0)) { for (int x2 = 0; x2 < button1.Width; x2++) { for (int y2 = 0; y2 < button1.Height; y2++) { if (tmp.GetPixel((x + x2), (y + y2)) == button1.GetPixel(x2, y2)) { b1Treffer++; } else { b1Treffer = 0; } } } } } } MessageBox.Show("Pixel - Treffer für Button1: " + b1Treffer); }
Ich dachte mir jetzt, das er den Screenshot Pixel für Pixel vergleicht, wenn er einen Pixel findet der mit dem Button zusammenpasst, wird ab diesem Pixel geprüft ob dieser mit dem Button zusammen passt. Aber leider funktioniert das nicht und ist leider auch sehr unperformant. Gibt es vielleicht eine Einfachere Methode?
-
In dem von dir gezeigten Code lädst du das Bitmap aber nicht in die Picturebox, sondern vergleichst deinen Screenshot mit dem Bild, das in der PictureBox drin ist (vermutlich ein leeres Bild).
Ersetze maldurchCode csharp:1 2
Bitmap tmp = new Bitmap("C:\\FindButton.bmp"); Bitmap button1 = (Bitmap)pictureBox1.Image;
Code csharp:1
Bitmap button1 = new Bitmap("C:\\FindButton.bmp");
hihi = -h²
-
Nein das ist so schon richtig.
Also ich habe einen Screenshot(Abgelegt C:\\FindButton.bmp) und ein Screenshot vom Button (in pictureBox1) und möchte jetzt den Button in dem Screenshot finden und mir dann halt die Koordinate geben lassen wo dieser Button zu finden ist.
Nur leider habe ich einen Fehler in meiner Logik, und das ganze ist nicht sehr performant, daher die Frage ob es eine Möglichkeit gibt das ganze anders umzusetzen?
-
Hallo,
hat dein Bild die gleichen Farbwerte an der Stelle des Buttons wie der Button selbst?
Wenn ja, warum deckst Du nicht einen Bereich ab, an dem Du die Farbwerte exakt abspeicherst (linke obere ecke des Buttons) und diese dann im zu dursuchenden Bild vergleichst... d.h. wenn an einer Stelle RGB(*,*,*) zu finden ist und die umliegenden Werte, je nach größe des Bereichs den Du gewählt hast auch passen, dann beginne mit dem Bildvergleich an ermittelter Stelle.
Wegen der Performanz: solange du Pixel für Pixel checken musst, wird das nicht schneller denke ich, aber eine andere Möglichkeit weis ich leider auch nicht.
MFG„Jeder Fehler erscheint unglaublich dumm, wenn Andere ihn begehen.“
Georg Christoph Lichtenberg
Netiquette (vA §15)
Codetags/Codeboxen
Sehr gut gelöste Beiträge bitte mit einem "Danke" abschließen, danke :D
Ähnliche Themen
-
Formular - via Button nach einem Bild suchen und direkt anzeigen
Von mig40soft im Forum Coders TalkAntworten: 4Letzter Beitrag: 02.07.09, 09:46 -
Screenshot
Von LookAndFeel im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 13.11.08, 08:36 -
[VB.net]Destkop Screenshot und Netzwerk Screenshot
Von Alaitoc im Forum .NET Windows FormsAntworten: 2Letzter Beitrag: 22.11.07, 09:23 -
Screenshot
Von BladeNeo im Forum Visual Basic 6.0Antworten: 0Letzter Beitrag: 17.02.05, 10:29 -
DVD Screenshot
Von docma im Forum PhotoshopAntworten: 9Letzter Beitrag: 30.04.04, 09:53





Zitieren
Login





