mabue88
Goto Top

C-Sharp - Externes Programm in Panel anzeigen und Image davon erstellen

Hallo,

für die Darstellung von Kamerabildern einer Videoüberwachungsanlage wird ein Programm, das vom Hersteller der Anlage zur Verfügung gestellt wird, verwendet. Dieses bietet keinerlei Schnittstellen um die angezeigten Bilder zu exportieren.

Die einzige Möglichkeit, die meiner Meinung nach übrig bleibt, ist, die dargestellten Bilder mittels "Screenshot" aufzunehmen, um sie so weiterverarbeiten zu können.

Dafür will ich eine Form erstellen, in welcher das externe Programm in einem Panel dargestellt wird. Von der Form will ich anschließend mit der Methode "DrawToBitmap" ein Bild von den dargestellten Bildern machen.
Das Anzeigen des externen Programms funktioniert soweit. Wenn ich allerdings von der Form oder von dem Panel ein Image erstelle (mit .DrawToBitmap), dann ist das externe Programm nicht auf dem Image enthalten.

Weiss jemand wie ich ein Image von der Form/Panel erstellen kann, auf dem das externe Programm auch dargestellt wird?

Danke
Gruss
mabue

Content-ID: 258597

Url: https://administrator.de/contentid/258597

Ausgedruckt am: 25.11.2024 um 08:11 Uhr

114757
114757 29.12.2014 aktualisiert um 11:01:44 Uhr
Goto Top
Moin,
das Video wird sicherlich über DirectX gerendert und ist so dann nicht über das herkömmliche GDI zu capturen, auch weil der Content zu einem anderen Thread gehört.
http://www.codeproject.com/Articles/274461/Very-fast-screen-capture-usi ...

Gruß jodel32
mabue88
mabue88 29.12.2014 um 11:02:37 Uhr
Goto Top
Hallo,

wenn ich das richtig verstanden habe, müsste ich doch dann aber wenigstens den Rahmen und die Steuerelemente des externen Programms sehen...

Aber das Panel ist komplett leer.
114757
114757 29.12.2014 um 11:09:16 Uhr
Goto Top
Aber das Panel ist komplett leer.
weil der Inhalt zu einem anderen Thread gehört, und mit deiner Methode dies so nicht geht.
Mach den Screenshot mal mit der Funktion CopyFromScreen:
http://msdn.microsoft.com/de-de/library/system.drawing.graphics.copyfro ...
Wenn damit der Inhalt immer noch nicht mit aufgenommen wird musst du es über DirectX machen.
kossuth
kossuth 12.01.2015 um 23:59:13 Uhr
Goto Top
hallo, Kannst Du OpenCV probieren :

http://www.codeproject.com/Articles/722569/Video-Capture-using-OpenCV-w ...

Dies ist ein Beispiel um eine AVI-Datei zu lesen, aber können Sie den Zeiger ändern und es zu erfassen Bildschirm oder eine Kamera,
vielleicht können Sie aus dem Programm externen Capturen .