2012-07-24 4 views
0

배경 : 60Hz 이상의 고속 디지털 카메라에서 라이브 이미지를 표시하고 있습니다. 라이브 이미지가 업데이트 이미지 컨트롤의 ImageSource으로 표시됩니다이미지 컨트롤이 이미지 업데이트를 완료했는지 여부를 감지합니다.

this.Dispatcher.Invoke(DispatcherPriority.Normal,(ThreadStart)delegate() { MyImage.Source = myNewBitMapImage; }); 

문제 : 내가 이전 이미지가 아직 화면에 표시되지 않은 경우 새로운 이미지를 건너 뛰어 응용 프로그램의 성능을 개선하고 싶었다. 예를 들어 이미지 컨트롤 (MyImage)이 마지막 이미지 업데이트를 아직 완료하지 않은 경우 위 디스패처 호출은 MyImage가 "유휴 상태"가 될 때까지 건너 뜁니다.

아직 업데이트 할 영역이 남아 있는지 확인하기 위해 GetUpdateRect()를 사용하여 MFC에서 비슷한 작업을 수행했으며,있을 경우 새 이미지 표시를 건너 뜁니다.

질문 : WPF에서 동일한 목표를 달성하는 방법은 무엇입니까? 이미지 컨트롤이 마지막 이미지를 아직 업데이트하지 않은 경우 새 이미지를 건너 뜁니다.

감사합니다.

+0

'MyImage.Source'를 설정하거나 이미지를 다운로드 중일 때 이미지가 이미 다운로드 되었습니까? [IsDownloading] (http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.bitmapimage.isdownloading) 속성을 확인할 수 있습니다. 얼마나 자주 이미지를 업데이트합니까? – Clemens

+0

이미지를 만들 때 IsDownloading이 TRUE라고 가정합니다 (잘못 입력 한 경우 수정하십시오). 그렇다면 이미지는 MyImage.Source에 전달 될 때 이미 생성되었습니다. – seekingalpha

답변

0

일부 연구 및 테스트를 마친 후, Dispatcher를 통해 Backgroundworker를 시작하면이를 달성 할 수 있음을 알게되었습니다. 기본적으로 "MyImage.Source = myNewBitMapImage"는 작업자의 DoWork에서 처리되며 작업자가 사용중인 한 다음 이미지는 건너 뜁니다. 희망이 도움이됩니다.

관련 문제