myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: WPF und XAML » Wie kann ich einen Pixel vom Desktop auslesen und Abweichungen berücksichtigen?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Wie kann ich einen Pixel vom Desktop auslesen und Abweichungen berücksichtigen?

 
Beiträge zu diesem Thema Autor Datum
 Wie kann ich einen Pixel vom Desktop auslesen und Abweichungen berücksichtigen? TheGateway 30.06.2020 20:20
 RE: Wie kann ich einen Pixel vom Desktop auslesen und Abweichungen berücksichtigen? Th69 30.06.2020 20:28
 RE: Wie kann ich einen Pixel vom Desktop auslesen und Abweichungen berücksichtigen? TheGateway 30.06.2020 21:15
 RE: Wie kann ich einen Pixel vom Desktop auslesen und Abweichungen berücksichtigen? Th69 01.07.2020 09:25
 RE: Wie kann ich einen Pixel vom Desktop auslesen und Abweichungen berücksichtigen? TheGateway 23.07.2020 02:35

Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
TheGateway
myCSharp.de-Mitglied

Dabei seit: 05.02.2020
Beiträge: 8


TheGateway ist offline

Wie kann ich einen Pixel vom Desktop auslesen und Abweichungen berücksichtigen?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,

ich habe eine Frage,

ich lese Pixel vom Desktop aus, aus einem Programm mit folgender Klasse

C#-Code:
        public bool CheckPixelColor(string hexcode, int x, int y)
        {


            //moveMouse(x, y);
            Task.Delay(500);
            //für einen Moitor
            // Bitmap bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);

            //für 2 Monitore
            Bitmap bitmap = new Bitmap(SystemInformation.VirtualScreen.Width, SystemInformation.VirtualScreen.Height);

            Graphics graphics = Graphics.FromImage(bitmap as Image);

            graphics.CopyFromScreen(0, 0, 0, 0, bitmap.Size);

            Color desiredPixelColor = ColorTranslator.FromHtml(hexcode);



                    Color currentPixelColor = bitmap.GetPixel(x, y);
                    if (desiredPixelColor == currentPixelColor)
                    {

                        listBox1.Items.Add(String.Format("Pixel gefunden at {0},{1} ", x, y));
                        //wenn gefunden mace dies
                        return true;
                    }
                    else
                    {
                string strHtmlColor = System.Drawing.ColorTranslator.ToHtml(currentPixelColor);
                listBox1.Items.Add(String.Format("Pixel NICHT at {0},{1} -> " + strHtmlColor, x, y));
                        return false;
                    }


           // GetPixel(Cursor.Position);

        }

Das funktioniert sehr gut WENN der Hex genau übereinstimmt, leider sind die Pixel nicht immer 100 % gleich sondern haben geringe abweichungen, wie zum Beispiel #FFFFFF wird gesucht und #FFFFFA ist es nun.

Wie könnte man damit umgehen eine kleine abweichung mit einzukalkulieren?!

Wäre es sinnvoller ein Bild zu erstellen und dies suchen zu lassen?


Lg
30.06.2020 20:20 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.770
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist online

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Der Farbabstand wird im deutschen  Delta E genannt und z.B. mittels des euklidischen Abstandes (der RGB-Werte) könntest du die Genauigkeit festlegen.

Du solltest aber dann direkt Color übergeben (und keinen Hexcode-String).
30.06.2020 20:28 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
TheGateway
myCSharp.de-Mitglied

Dabei seit: 05.02.2020
Beiträge: 8

Themenstarter Thema begonnen von TheGateway

TheGateway ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

besteht den die Möglichkeit von dem gesuchten ein ein Bild zu machen und den desktop danach durchsuchen zu lassen?
30.06.2020 21:15 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.770
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist online

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Du legst doch schon mittels graphics.CopyFromScreen(...) einen Screenshot an (und hast dann in bitmap das Bild).
Und mittels bitmap.GetPixel(x, y) greifst du ja schon auf einen einzelnen Pixel zu -> darum kannst du selbstverständlich auch eine Schleife packen.

Du solltest nicht einfach so etwas (aus dem Internet) kopieren, ohne es zu verstehen.

Was ist denn dein genaues Ziel?
01.07.2020 09:25 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
TheGateway
myCSharp.de-Mitglied

Dabei seit: 05.02.2020
Beiträge: 8

Themenstarter Thema begonnen von TheGateway

TheGateway ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

ich verstehe schon was mein code da veranstaltet, aber ich kann keinen zusammenhang zu meinem vorhaben herstellen... bzw wie ich es realsieren könnte. Die farbwerte auslesen und vergleichen ist ja wie beschrieben kein Problem.

Ich habe ein Programm, in dem Texte angezeigt werden, ABER mit leichter transparenz. Das heisst das zB #00000 auch zu #0000FF werden kann, also mit abweichungen. Mein vorhaben war es dies mit einzukalkulieren, ob dies dann passt ist auch fraglich.

Wäre es den machbar und oder sinnvoll von dem gesuchten Text ein Screenshot zu machen und dies auf dem Desktop zu suchen und nicht einzelne Pixel?
23.07.2020 02:35 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 3 Monate.
Der letzte Beitrag ist älter als 2 Monate.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 22.10.2020 16:49