2013-03-27 1 views
0

집합을 표시하는 Window이 있습니다. 그들은 많은 기억을 소비합니다. 미리보기 옵션이 있습니다.다른 창 안에 Window 또는 UserControl 인스턴스 추가

미리보기는 MediaElements이로드되어 재생되는 Window 메인과 동기화되어야합니다.

현재 Window 메인에로드 된 컨트롤의 인스턴스 두 개를 실행하고 Window 미리보기를 실행하면 전체 응용 프로그램이 느려집니다. 때로는 MediaElements 중 일부가 공백으로 표시되기도합니다.

은 가능한 별도 Panel, Canvas 또는 Grid 이미 실행 또는 하위 제어로서 첨가 Window 또는 UserControl (A)의 인스턴스를 표시한다.

답변

1

MediaElements을 여러 개 사용하는 것으로 알려진 제한 사항이 있습니다. see herehere처럼 권장하지 않습니다.

WPF MediaKit 또는 DirectShowNet 라이브러리를 사용해 보는 것이 좋습니다.

WPF MediaKit은 MediaElement에 대한 직접적인 대안을 제공합니다.

MediaUriElementVisualBrush를 사용하여 메인 창으로의 Visual을 할당하여 주 창 및 미리보기 창으로 동기화 문제를 해결 그래서

<DirectShowControls:MediaUriElement 
     Source="{Binding ElementName=fileDialog, Path=FilePath}" 
     Stretch="Uniform" 
     VideoRenderer="VideoMixingRenderer9" 
     LoadedBehavior="Play"/> 
+0

나는 MediaKit를 사용하여 시도 및 오디오 드라이버이 존재하지 않는 경우는 비디오를로드하지 않습니다. 이것을 극복 할 수있는 해결책이 있습니까? – Surya2089

+1

소스 코드를 다운로드 할 수 있습니다. MediaFailed 이벤트를 호출하는 대상, 오디오 장치가없는 특정 HRESULT를 추적하여 해지되지 않도록해야합니다. –

+0

'MediaKit'은 제 문제 중 절반 만 수정합니다. 두 개의 별도 Windows에서 재생되는 비디오의 위치를 ​​동기화하는 솔루션을 알고 계십니까? – Surya2089

0

처럼 사용할 수 있습니다 그리고이 효과적으로 나 감소하는 데 도움이 메모리 사용량.

Referece : 링크 : visual-brush-in-wpf