GetPixel() & ReleaseDC() ?



  • Hi leute, ich habe hier schon einige Infos zu den oben genannten funktionen bekommen, doch hab ich immer noch ein paar fragen und probleme. 😞

    ich will in einem teil von einem programm abfragen,
    ob der zustand des bildschirms sich geändert hat.

    ich wollte das so gestalten, dass man mit GetPixel() einen wert speichert,
    den dann alle 5s abfragt ob er immer noch der gleiche ist.

    hab mir das (ungefähr) so gedacht:

    HDC dc = GetDC(0); //is glaueb ich notwendig oder?

    var1 = GetPixel(dc, 600, 400);
    Sleep(5000);
    If(GetPixel(dc, 600, 400) == var1)
    { ...
    

    gibts da ne bessere lösung oda wie könnte man das machen?



  • Ja nur ein Pixel, oder willste alle Pixel am Bildschirm prüfen? Für nur 1 Pixel würde ich sagen ist das so OK, für grössere Bereiche würde ich DirectDraw nehmen, und von der Primary Surface auf ne Memory Surface kopieren.
    Davon (Memory Surface) haste dann 2 Stück auf die du abwechselnd draufblittest, und kannst dann immer die aktuelle mit der vorigen vergleichen -- wesentlich schneller als 1 Mio. mal GetPixel aufzurufen.

    Vielleicht wäre es aber hilfreich zu wissen was du überhaupt genau machen willst.

    Gehts da vielleicht um die Sache die vor 100 Jahren mal jmd. im Projekte Forum gepostet hat? Irgendwas überwachen und dann schreien wenn sich in dem eingestellten Bereich vom Bildschirm was ändert?
    Wäre sicherlich schneller wenn du wem xyz€ in die Hand drückst und der macht das für dich... 😉

    EDIT: sch**** Tippfehler 😃



  • ich geb niemanden geld ^^
    ne ähm... hab nix zu nem projekt früher gepostet :p
    ich habn programm, was bei ner änderung aufm bildschirm (da würde doch eigtl der wert EINES pixels ausreichen?) etwas auslösen soll...

    bTw: wie funktioniert das mit der surface? 😃 😃 😃
    mfg chaoz



  • Chaoz-Coder schrieb:

    ich habn programm, was bei ner änderung aufm bildschirm (da würde doch eigtl der wert EINES pixels ausreichen?) etwas auslösen soll...

    Wenn es der richtige Pixel ist, vielleicht 😉 Wenn das beobachtete Programm aber genau diesen Pixel nicht anfaßt (bzw. mit der selben Farbe überschreibt), merkst du davon gar nichts.



  • CStoll schrieb:

    Chaoz-Coder schrieb:

    ich habn programm, was bei ner änderung aufm bildschirm (da würde doch eigtl der wert EINES pixels ausreichen?) etwas auslösen soll...

    Wenn es der richtige Pixel ist, vielleicht 😉 Wenn das beobachtete Programm aber genau diesen Pixel nicht anfaßt (bzw. mit der selben Farbe überschreibt), merkst du davon gar nichts.

    ich hab scho drauf geachtet, dass der pixel zu 100% ne andere farbe annimmt, np 😉



  • Chaoz-Coder schrieb:

    ich geb niemanden geld ^^
    ne ähm... hab nix zu nem projekt früher gepostet :p
    ich habn programm, was bei ner änderung aufm bildschirm (da würde doch eigtl der wert EINES pixels ausreichen?) etwas auslösen soll...

    bTw: wie funktioniert das mit der surface? 😃 😃 😃
    mfg chaoz

    Ok, dann war das jmd. anderer. Der wollte sowas ähnliches für lau programmiert haben. Dachte vielleicht warst du das und versuchst es nu selbär 🙂



  • bTw: kann mir ma wer sagen, welchen datentyp ich tmp zuweisen müsste?

    tmp = GetPixel(dc, 600, 400);
    


  • COLORREF
    Mit den Makros GetR(-G,-B)Value(..) kannst du die RGB Werte auslesen.



  • geht irgendwie nich wirklich....
    die funktion soll solange gehen,
    wie sichd er screen nich ändert

    void mypixelchange() {
    	bool truy = false;
    	HDC dc = GetDC(0);
    	COLORREF tmp;
    
    		while(truy == true) {
    		tmp = GetPixel(dc, 600, 400);
    		Sleep(5000);
    		if(tmp == GetPixel(dc, 600, 400))
    			truy = false;
    		};	//ende while
    };
    

    kA aba ich binb ratlos (linkerfehler)


Anmelden zum Antworten