Ich möchte ein Programm schreiben, welches die Bildschirmfarben ausliest, und dann schaut, welche Farbe am häufigsten vorkommt.
Es soll so was ähnliches wie Ambilight geben.
Dazu muss natürlich nicht der ganze Bildschirm ausgelesen werden, sonder nur der Rand.
folgende Ideen:
- Farbwerte auslesen und zwischenspeichern
- nur die Ränder betrachten; Koordinaten angeben
- Farbwerte vergleichen, nach dem am häufigsten vorkommenden suchen
Den folgenden Code habe ich bereits:
C-Quellcode
- #include <windows.h>
- #include <iostream>
- using namespace std;
- int main(void){
- HDC dc = GetDC(0); //WinAPI Funktion, liest Farben
- for(int i=0;i<1024;i++){ // Koordinaten y
- for(int j=0;j<1280;j++){ // Koordinaten x
- COLORREF c = GetPixel(dc,j,i);
- cout << (int)GetRValue(c) << " " << (int)GetGValue(c) << " " << (int)GetBValue(c) << "n"; // ausgabe der Pixelwerte
- }
- }
- ReleaseDC(0,dc);
- return 0;
- }
Das hat aber mehrere Probleme:
- Nur vorgegebene Auflösung
- ganzer Bildschirm ausgelesen
- kein Vergleich der Farben
Den Code habe ich nicht selbst geschrieben... denke aber man könnte darauf aufbauen.
Ich erwarte jetzt nicht, dass mir jemand hier ein fertiges Programm schickt :P, aber ich würde mich freuen, wenn mir jemand die Befehle und deren Verwendung sagen könnte, mit denen ich den Rest erreiche
Vielen Dank schon mal fürs lesen!