Hallo,
ich bräuchte vielleicht mal ein Tipp, wie man das ganze umsetzen kann, da ich seit Stunden nicht selber draufkomme.
Im Prinzip möchte ich ein kleineres Bild auf dem Bildschirm untersuchen. Das heißt, ich mache vom Desktop ein Screenshot(in der Auflösung 1920x1080) und importiere durch die Bitmap Klasse ein Bild(z.B in der Auflösung 1280x720) und lasse dann die x und y Werte des Bildschirms mit der des kleineren Bildes vergleichen durch GetPixel(x,y).
Ich will damit erreichen, dass wenn das Bild überprüft wurde, dass dann die Maus auf eines der Bildpunkte zeigt(wenn es gut läuft, auf das letzte gefundene Bildpunkt.)
Mein Code sieht so aus:
-> Die Methode funktioniert nur zum Teil. Wenn ich auf den Button drücke, kriege ich ein x und y wert aber das passt nicht so ganz, da die Maus dann ganz oben links in der Ecke des gesuchten Bildes hovert.
Bzw: Bei kleineren Bildern, funktioniert das. D.h ich erhalte den letzten Bildpunkt von der Methode und meine Maus zieht dann ganz unten rechts zum Pixel
Was übersehe ich hier?
ich bräuchte vielleicht mal ein Tipp, wie man das ganze umsetzen kann, da ich seit Stunden nicht selber draufkomme.
Im Prinzip möchte ich ein kleineres Bild auf dem Bildschirm untersuchen. Das heißt, ich mache vom Desktop ein Screenshot(in der Auflösung 1920x1080) und importiere durch die Bitmap Klasse ein Bild(z.B in der Auflösung 1280x720) und lasse dann die x und y Werte des Bildschirms mit der des kleineren Bildes vergleichen durch GetPixel(x,y).
Ich will damit erreichen, dass wenn das Bild überprüft wurde, dass dann die Maus auf eines der Bildpunkte zeigt(wenn es gut läuft, auf das letzte gefundene Bildpunkt.)
Mein Code sieht so aus:
C#-Quellcode
- namespace ScanPicture
- {
- public partial class Form1 : Form
- {
- int x;
- int y;
- int l;
- int w;
- int z;
- [DllImport("user32.dll")]
- static extern bool SetCursorPos(int X, int Y);
- private void btnScan_Click(object sender, EventArgs e)
- {
- l = 0;
- CaptureScreen();
- }
- private void CaptureScreen()
- {
- Bitmap myPic; //Bild vom Desktop machen
- Bitmap myPic2; //Bild importieren
- myPic2 = new Bitmap("Pfad zum Bild");
- // Bild vom Bildschirm machen
- myPic = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
- Graphics graphics = Graphics.FromImage(myPic as Image);
- graphics.CopyFromScreen(0, 0, 0, 0, myPic.Size);
- SearchForPicture(myPic2, myPic);
- }
- private bool SearchForPicture(Bitmap searchFor, Bitmap searchIn)
- {
- w = 0;
- z = 0;
- Color FarbeMyPic2 = searchFor.GetPixel(0, 0);
- for (x = 0; x < searchIn.Width; x++)
- {
- for (y = 0; y < searchIn.Height; y++)
- {
- Color FarbeMyPic = searchIn.GetPixel(x, y);
- FarbeMyPic2 = searchFor.GetPixel(w, z);
- if (FarbeMyPic == FarbeMyPic2)
- {
- l++;
- if (z + 1 < searchFor.Height)
- z++;
- if (searchFor.Height == z + 1)
- {
- if (w < searchFor.Width)
- w++;
- if (searchFor.Width == w || searchFor.Width < w)
- {
- MessageBox.Show("Gefunden bei x: " + x + " und " + " y: " + y + "\n" + "So oft hat es gepasst:" + l);
- SetCursorPos(x, y);
- return true;
- }
- }
- }
- }
- }
- MessageBox.Show("Nicht gefunden!");
- return false;
- }
- }
- }
-> Die Methode funktioniert nur zum Teil. Wenn ich auf den Button drücke, kriege ich ein x und y wert aber das passt nicht so ganz, da die Maus dann ganz oben links in der Ecke des gesuchten Bildes hovert.
Bzw: Bei kleineren Bildern, funktioniert das. D.h ich erhalte den letzten Bildpunkt von der Methode und meine Maus zieht dann ganz unten rechts zum Pixel
Was übersehe ich hier?
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Winchester“ ()