2012-08-11 6 views
0

현재 C# 프로젝트로 LibVLC를 설치했으며 Panel을 사용하여 비디오 스트림을 출력합니다. 구현하고자하는 일부 GUI 옵션에 WPF가 더 적합하기 때문에 이제는 프로젝트를 전환했습니다. 그러나 WPF 컨트롤에는 C# 컨트롤과 같은 핸들이 없다는 것을 알게되었습니다.비디오 스트림에 사용할 컨트롤?

나는이가 ... http://videorendererelement.codeplex.com

http://wpfmediakit.codeplex.com/ 그러나 나는 WPF 새로운 오전과 실제로 통합하는 방법을 몰라 발견했다. WPF에서 LibVlC의 비디오 스트림을 출력하는 가장 좋은 방법은 무엇입니까?

답변

0

나는 그것이 불가능 두려워 ...

, 핸들 제공하는 컨트롤은 대부분 윈폼, 같은 렌더링을위한 libvlc은 불가능하거나 쉽지 않습니다.

화면에 here

모든 WPF 요소가 궁극적으로 HWND에 의해 백업됩니다 참조하십시오. WPF 창을 만들면 WPF는 최상위 HWND를 만들고 HwndSource를 사용하여 HWND 내부에 창과 WPF 내용을 배치합니다. 응용 프로그램의 나머지 WPF 콘텐트는 그 단일 HWND를 공유합니다. 예외는 메뉴, 콤보 상자 드롭 다운 및 기타 팝업입니다. 이러한 요소는 고유 한 최상위 창을 만듭니다. 따라서 WPF 메뉴가이 창을 포함하는 HWND 창의 가장자리를 지나갈 수 있습니다.

당신은 윈도우를 사용하려고이 같은 핸들을 얻기 위해 시도 할 수 있습니다 :

IntPtr windowHandle = new WindowInteropHelper(windowInstance).Handle 

그런 다음 libvlc이 핸들을 전달합니다. 이 핸들을 Window의 Loaded 이벤트보다 빨리 가져 오는 것을 잊지 마십시오. here

그러나 이것은 원하는 것 같지 않은 최상위 Window 컨트롤을 사용하도록 제한합니다.

1

WindowsFormsHost 컨트롤을 사용하여이 문제를 해결할 수 있었고 이전에 WinForm 응용 프로그램에서했던대로 Panel을 사용했습니다. 여전히 WPF에 고유 한 다른 것을 사용하는 것이 바람직 할 것 같지만, 현재로서는 이것이 잘 작동하고 있습니다. WPF 컨트롤이 배후에서 Win32 컨트롤합니다 (MS 특정 HWND 또는 더 일반적인 HANDLE)이 아니기 때문에

+1

WPF 창에 일부 WPF 컨트롤을 넣으려고 했습니까? 이것을 시도했을 때 기억 하듯이, 모든 WPF 컨트롤은 어떤 z 순서로 배치되어 있더라도 WindowsFormsHost에 의해 숨겨집니다. – Fengari

+0

지금까지는 다른 컨트롤을 Grid, DataGrid 및 일부 단추로만 사용할 수 있지만 다른 컨트롤을 추가하면 여전히 문제가 될 수 있습니다. –

관련 문제