kostenloser Webspace werbefrei: lima-city


Bildschirm auslesen

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    progger

    Kostenloser Webspace von progger

    progger hat kostenlosen Webspace.

    Hallo,
    ich möchte mit dem folgenden Programm eigentlich den Bildschirm auslesen. Leider weiß ich nicht, ob es das auch tut, weil nichts auf der Konsole ausgegeben wird. Das Programm läuft etwa 3 Sekunden und beendet sich dann.
    #include <windows.h>
    #include <iostream>
    using namespace std;
    
    int main(void){
        HDC dc = GetDC(0);
        for(int i=0;i<800;i++){
            for(int j=0;j<1024;j++){
                COLORREF c = GetPixel(dc,j,i);
                cout << GetRValue(c) << GetGValue(c) << GetBValue(c) << "\\n";
            }
        }
        ReleaseDC(0,dc);
        return 0;
    }



    Beitrag geändert: 19.10.2008 17:57:44 von progger
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. b**********n

    Ich weiß nicht, ob es den Bildschirm ausliest, aber du kannst ja dazu schreiben, dass er das Ausgelesene auch ausgibt und so testen.
  4. Autor dieses Themas

    progger

    Kostenloser Webspace von progger

    progger hat kostenlosen Webspace.

    badur-design schrieb:
    Ich weiß nicht, ob es den Bildschirm ausliest, aber du kannst ja dazu schreiben, dass er das Ausgelesene auch ausgibt und so testen.

    Das mache ich doch in Zeile 10.
  5. Eigentlich müsste er ein Fenster der die ersten 1024 Pixel in der Breite und die ersten 800 in der Höhe auslesen und von jedem Pixel R-, G- und B-Werte ausgeben.

    Es könnte allerdings sein, dass das HDC nicht valid ist.

    Wirft es denn irgendwelche Fehler oder so?
  6. Autor dieses Themas

    progger

    Kostenloser Webspace von progger

    progger hat kostenlosen Webspace.

    Nein, keine Fehler, keine Konsole; es läuft nur 3 Sekunden lang.
  7. tischfussball

    tischfussball hat kostenlosen Webspace.

    Du musst beachten, dass die Makros GetXValue dir keine Zahlwerte zurückliefern, sondern chars. Wenn du viel Schwarz auf dem Monitor hast (z.B. Eingabeaufforderung mit Alt + Enter in VGA-Modus geschaltet), dann siehst du nichts, weil die ganze Zeit nur nicht druckbare Zeichen ausgegeben werden (ASCII 0 und ASCII 13/10). Probiers mal mit einem typecast oder speichere die GetXValue-Resultate in geeigneten Variablen zwischen.


    Beitrag geändert: 19.10.2008 19:10:11 von tischfussball
  8. Autor dieses Themas

    progger

    Kostenloser Webspace von progger

    progger hat kostenlosen Webspace.

    Mit einer Typumwandlung nach int passiert leider auch nichts.
  9. Autor dieses Themas

    progger

    Kostenloser Webspace von progger

    progger hat kostenlosen Webspace.

    Das Programm will zwar nichts auf der Konsole ausgeben, aber wenn man es so umschreibt:
    #include <windows.h>
    #include <iostream>
    using namespace std;
    
    int main(void){
        HDC dc = GetDC(0);
        for(int i=0;i<800;i++){
            for(int j=0;j<1024;j++){
                COLORREF c = GetPixel(dc,j,i);
                COLORREF d = RGB(256-GetRValue(c),256-GetGValue(c),256-GetBValue(c));
                SetPixel(dc,j,i,d);
            }
        }
        ReleaseDC(0,dc);
        return 0;
    }

    gibt es ein Negativ des Screens aus (bei einer Auflösung von 1024x800).
    Trotzdem danke für die Antworten !
  10. k***o

    Bei mir gehts mit:

    HDC dc = GetDC(0);
    for(int i=0;i<800;i++){
     for(int j=0;j<1024;j++){
      COLORREF c = GetPixel(dc,j,i);
      cout << (int)GetRValue(c) << " " << (int)GetGValue(c) << " " << (int)GetBValue(c) << "n";
      }
     }
    ReleaseDC(0,dc);
    return 0;


    liefert mir pro zeile die r g b werte des pixels

    MfG


    Beitrag geändert: 19.10.2008 21:45:41 von koslo
  11. Autor dieses Themas

    progger

    Kostenloser Webspace von progger

    progger hat kostenlosen Webspace.

    Bei mir geht's nicht so. Mein Compiler mag mich wohl nicht...:eek:
  12. s******s

    Kann es denn sein, dass die Werte ausgegeben werden, aber dein Programm am Ende einfach nicht pausiert?

    Setz doch mal ein system ( "pause" ) ; vor dein return.


    Beitrag geändert: 20.10.2008 17:03:24 von shandris
  13. k***o

    was für einen compiler benutzt du eigentlich?



    shandris schrieb:
    Kann es denn sein, dass die Werte ausgegeben werden, aber dein Programm am Ende einfach nicht pausiert?

    Setz doch mal ein system ( 'pause' ) ; vor dein return.


    Beitrag geändert: 20.10.2008 17:03:24 von shandris

    dürfte nicht der grund sein, denn 800*1024 zeilen auszugeben dauert länger als 3 sekunden.

    MfG
  14. Autor dieses Themas

    progger

    Kostenloser Webspace von progger

    progger hat kostenlosen Webspace.

    Ich benutze den Bloodshed wxDev++.
    Ob es vielleicht daran liegt, dass dieser für die GUI-Bibliothek wxWidgets konzipiert ist?
    Eigentlich muss ich das auch garnicht auf der Konsole ausgeben. Wenn ich ein Negativ vom Screen hinbekomme, habe ich auf jeden Fall die Pixel ausgelesen.
    Trotzdem danke für die Antworten.
  15. hi

    ich programiere mit borland aber noch in der anfangsfahse
    kann es sein das in der forschleife einfach eine u große zahl ist.
    weil bei borland hängt der sich auf bei solchen schleifen und
    vielleicht schließt Bloodshed wxDev++ bei solchen schleifen
    einfach das programm.

    versuch mal erst mal mit kleinen zahlen. :confused:
  16. Autor dieses Themas

    progger

    Kostenloser Webspace von progger

    progger hat kostenlosen Webspace.

    Daran liegt es bestimmt nicht, wenn ich ein Negativ machen kann. Außerdem kann das Thema geclosed werden. Ich wollte nur die Pixel auslesen und habe es geschafft; die Konsole ist eh hässlich.
  17. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!