|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
magynhard Super JLI'ler
Anmeldedatum: 26.04.2003 Beiträge: 461 Wohnort: Wild durch die Welt ;-) Medaillen: Keine
|
Verfasst am: 09.11.2006, 17:06 Titel: Pixel vom aktuellen Bildschirm auslesen |
|
|
Hallo,
ich möchte gerne vom aktuellen Bildschirm die Pixeldaten auslesen, und habe mir dazu Folgendes provisorisch zusammengebastelt:
CPP: | HDC hdcScreen = CreateDC("DISPLAY", NULL, NULL, NULL); // Bildschirmabbild
int breite = GetDeviceCaps(hdcScreen, HORZRES);
int hoehe = GetDeviceCaps(hdcScreen, VERTRES);
//auslesen
DWORD farbe;
DWORD r,g,b;
farbe = GetPixel(hdcScreen,5,5); // testweise pixel an koord. 5x5 auslesen
r = GetRValue(farbe); // ist immer 255
g = GetGValue(farbe); // ist immer 255
b = GetBValue(farbe); // ist immer 255
DeleteDC(hdcScreen);
|
Irgendetwas scheine ich vergessen zu haben?!
Egal welchen Pixel ich auch angebe, er ist immer 255, was aber nicht dem Bildschirminhalt entspricht.
Wer weiß Rat? _________________ Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
|
|
Nach oben |
|
|
manu Super JLI'ler
Alter: 35 Anmeldedatum: 09.03.2006 Beiträge: 327 Wohnort: allgäu (DE) Medaillen: Keine
|
Verfasst am: 09.11.2006, 17:27 Titel: |
|
|
hm, hab noch nie intensiv damit gearbeitet, erinnere mich aber dran in nem fremden code in dem zusammenhang mal sowas nach dem CreateDC() gesehehen zu haben.
CPP: | CreateCompatibleDC(hdcScreen); |
hab grad mal geguckt und den befehl gibts wirklich so.. hab leider grad keine Zeit noch in der msdn genauer nachzuschlagen. Ist mir bloß gerade so eingefallen |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 09.11.2006, 20:46 Titel: |
|
|
ich musste das auch mal machen, um den Bildschirminhalt drucken zu lassen; ich bin damals so vorgegangen:
Code: |
1. DC des Fensters mit GetDC holen
2. die Bitmap des Screens mit CreateCompatibleBitmap holen, dem als erstes den DC von gerade übergeben und dann die Auflösung
3. kompatiblen SpeicherDC mit CreateCompatibleDC mit DC aus 1. holen
4. die Bitmap mit SelectObject in den DC aus 3. laden
5. mit BitBlt den Fenster inhalt des DC aus 1. in DC aus 3. laden, so:
BitBlt(hMemDC, 0, 0, cx, cy, hWndDC, 0, 0, SRCCOPY);
|
Danach kannst du mit GetPixel und dem DC aus 3. die Pixel abfragen
am Ende musst du in dieser Reihenfolge alles wieder freigeben:
Code: |
1. DeleteDC mit DC aus 3.
2. DeleteObject mit Bitmap aus 2.
3. ReleaseDC mit hWnd und DC aus 1. |
sry, hab grad leider keine Zeit das ausführlicher zu beschreiben, guck am besten in der MSDN, probiers so, und schreib die Fragen hier rein, ich beantworte die dann in den nächsten Tagen(falls es kein anderer vorher macht )
Gruß DXer |
|
Nach oben |
|
|
magynhard Super JLI'ler
Anmeldedatum: 26.04.2003 Beiträge: 461 Wohnort: Wild durch die Welt ;-) Medaillen: Keine
|
Verfasst am: 10.11.2006, 05:24 Titel: |
|
|
Danke! Ich werde damit mal rumhantieren und eine Rückmeldung geben. _________________ Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
|
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|