Pixelfarbe eine Image bestimmen
-
Hallo Allerseits.
Ich bin neu hier und meine C++ Kenntnisse sind auch nicht grade die Besten (quasi Frischling).
Zu meinem Problem:
Ich bin verzweifelt auf der Suche die Pixelfarbe eines Image zu bestimmen.
Ich habe ein Fenster mit einem Image mit 2 verschieden farbigen Flächen(die ich zuvor in das Image zeichne) und möchte quasi wissen wann ein Kreis die andere Fläche "durchfliegt" und diese dann andersfarbig zeichnen.
Jetzt habe ich schon viel gelesen, dass es mit
HDC dc = GetDC(0);
COLORREF col = GetPixel(dc, x,y);
rgb_r = GetRValue(col);
rgb_g = GetGValue(col);
rgb_b = GetBValue(col);gehen soll.
Allerdings liefert mir das "nur" die Farbe des Desktops, richtig?
Ich bräuchte allerdings jene von meinem Image in meinem Fenster.Für jede Art von Hilfestellung wär ich unheimlich dankbar.
LG
bubu
-
Dann brauchst du halt das DC von deinem Fenster. Das ist der Parameter von GetDC, statt 0 musst du das HWND von deinem Fenster reingeben.
-
Ok und wie komm ich an diesen hdw wert ran? Wie gesagt. Absoluter Neuling...
-
Wie könnte dir denn eine Pixelfarbe bei der Problemstellung helfen? Was sind das genau für "Flächen"?
Eine mathematische Lösung wäre vorzuziehen (wenn Fläche1 und Fläche2 sich an einer Koordinate überschneiden, dann zeichne den Pixel in anderer Farbe - vorher Boundingboxen berechnen und nur die nötigen Koordninaten untersuchen).
-
bubumannsen schrieb:
Ok und wie komm ich an diesen hdw wert ran? Wie gesagt. Absoluter Neuling...
Dann frag nicht, sondernlies ein Tutorial!
Just my 2 cents!
-
#include <windows>
int main()
{
int main()
{
COLORREF farbe;
HDC desktop;
POINT maus_pos;long maus_sp_x;
long maus_sp_y;HDC handle = GetDC(0); // 0 bedeutet für den ganzen Bildschirm
while(1)
{
system("CLS");
GetCursorPos(&maus_pos);
cout << "X:" << maus_pos.x << " Y:" << maus_pos.y << endl;
maus_sp_x = maus_pos.x;
maus_sp_y = maus_pos.y;farbe = GetPixel(handle , maus_sp_x, maus_sp_y );
cout<<"RGB Pixel Wert: "<< hex << farbe <<endl;
}}
Ach ja und deine Frage bezüglich hwnd
Ich glaub du suchst das hier:
HWND hwnd = FindWindow(0,"TitleVonDeinemFenster"); // Bsp. Titel vom Windows Taschenrechner ist: Rechner
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/dd144871(v=vs.85).aspx
-
Ich danke euch!