Farbe eines Pixels eines Forms.Panel
-
Hallo,
ich stehe mal wieder vor einem Problem, zu dem das gute Internet nicht wirklich ne Lösung parat hält...
Folgendes: Ich benötige das Bild einer Webcam in meinem eigenen Programm, dies erledige ich (nach einem zum Glück guten Tutorial und sogar fertigen Quellcodes) indem ich dieses Bild mittels DirectShow auf ein System.Windows.Forms.Panel lege. (http://www.codeproject.com/KB/audio-video/Cpp_DShowNET_FrameCap.aspx)
Nun mein Problem: Ich möchte die Farbwerte der Pixel des Bildes miteinander vergleichen, brauche also die Möglichkeit die Farbe der einzelnen Pixel des Panels zu ermitteln. Da das Panel eigentlich nicht dafür gedacht ist, gibt es natürlich keine einfache Funktion dafür...
Mein Grundgedanke wäre gewesen, das Panel vielleicht temporär als Bitmap zu speichern, und diese Pixel für Pixel durchzugehen, aber auch dafür fehlen mir die Ansätze, da ich ehrlich gesagt, noch ein ziemlicher Anfäger in C++/CLI bin...Für eventuelle Lösungen oder Ansätze wäre ich total dankbar
Mfg. ricwein
-
Mittels der DrawToBitmap()-Methode (vom Panel) kannst du dir eine Bitmap daraus erzeugen (das Bild muß aber sichtbar sein).
Und dann mittels der Bitmap-Methode GetPixel() oder aber der Kombination von LockBits() / BitmapData.Scan0 sowie UnlockBits() kannst du dann auf die einzelnen Pixel zugreifen (wobei die Methode GetPixel() sehr langsam ist, d.h. nimm lieber Scan0 und arbeite direkt auf dem Speicher).
-
Vielen Dank für die schnelle Antwort,
ich habe das Problem inzwischen lösen können, wie vorgeschlagen mittels des Umweges über ein Bitmap im Arbeitsspeicher
Problem erledigt