Wie erhalte ich eine transparente Fenster-Dialog und Primitiven Zeichnung auf ein Fenster zu bleiben, das Streaming-Video ist zu zeichnen?

StackOverflow https://stackoverflow.com/questions/2180125

Frage

Ich habe ein ActiveX-Steuerelement, das ein Fenster enthält, das Video hat Streaming es gezogen wird. Ich habe einen separaten Dialog, dass ich in einem anderen Fenster zu erstellen, dass ich transparent gemacht habe oder halbtransparent auf verschiedene Weise (dh die Verwendung SetLayeredWindowAttributes (...) zusammen mit der Layered-Eigenschaft [zum Alpha-Blending] des Dialogs oder Einstellen der transparenten Eigenschaft).

Außerdem habe ich versucht, verschiedene Methoden zu verwenden, um zu versuchen, um das Fenster zu bekommen für den Dialog immer auf den Streaming-Video-Fenster zu ziehen aber keine hat, um Arbeit für mich erwiesen. Wenn ich eine Taste auf dem Dialog oder mit LineTo auf der transparenten Oberfläche ziehen (...) nennt sie bleiben nicht auf das Video. Ich habe zu verwenden SetWindowPos versucht, die z-Reihenfolge der beiden Fenster zu beeinflussen und auch versucht, das Dialogfenster Eigenschaften wie „TopMost“ zu ändern, aber ohne Erfolg.

Hat jemand versucht so etwas wie dies für ein überlagertes Fenster zu tun, über Video-Streaming und die z-Ordnung zur Arbeit an der Malerei die Frontscheibe immer nach dem Streaming-Video bekommen?

UPDATE: 02.10.10 - versuchte WS_EX_LAYERED Eigenschaft mit SetLayeredWindowAttributes mit (...) mit LWA_COLORKEY und erreicht, was ich suchte. Da Schicht Eigenschaft nicht mit WS_CHILD Stil bringt diese Lösung mit ihm einig erforderlichen Managements der Overlay-Fenster-Position in Bezug auf das Fenster mit Video verwendet werden kann. Zusätzlich gibt es einige andere Merkwürdigkeiten ich zu beseitigen versuchen. Zum Beispiel, wenn ActiveX-Steuerelement Fenster mit Video in einem IE Tab eingebettet ist, und ich schalte auf einen anderen Tab Steuerelemente auf dem Overlay-Fenster bleiben auf der neuen Registerkarte (wenn WS_POPUP Stil verwendet wird). Dennoch, wenn es die Untersuchung mit diesem anderen alternativen Mitteln sein wird, dann den Umgang den Schalter und verstecken das Fenster visability zu bestimmen.

War es hilfreich?

Lösung 2

WS_EX_LAYERED Eigenschaft mit SetLayeredWindowAttributes (...) LWA_COLORKEY mit Transparenz erreichen wird, wo colorkey verwendet wird. Transpaerent Overlay bleibt vor Video- und aktiven Streaming-Video bleibt zu Hause sind. WS_CHILD Stil kann nicht mit geschichtetem Stil verwendet wird und erfordert daher Fensterposition zusätzliches Management, wenn WS_POPUP verwendet wird. Zusätzliche Probleme können aus Unfähigkeit entstehen als Kind Fenster haben Overlay. -siehe Q zu aktualisieren.

Andere Tipps

Das ist nicht möglich sein kann, macht eine Menge Code-Video-Ausgang Verwendung von Hardware-Overlays also, wenn Ihr Fenster vor ist, das Overlay entweder nicht funktionieren oder nicht ziehen, wo Ihre Pixel überhaupt sind.

Hardware-Overlays ermöglichen, den Videozeichencode zu gegenwärtigen Rahmen in einem anderen Format als die des aktuellen Anzeigeformat, die eine Menge von CPU und Speicher-Bandbreite sparen.

Nach meiner Erfahrung ist das Overlay in der Regel in YUV-Format statt RGB, weil viele Videokompressionsformate auf YUV basieren. So ist die Video-Hardware einige Pixel von einem YUV-Bild und nicht aus dem Bildschirmpuffer wird immer, so dass Sie nicht diese Pixel beeinflussen können, wenn Sie sich in der Rendering-Code Pfad des Videostroms eingefügt bekommen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top