2013-09-11 3 views
1

Я получаю ImageStream на CaptureImageAvailable событие. На ContentReadyEventArgs У меня есть ImageStream.Как получить изображение из ImageStream?

Я пытаюсь скопировать этот поток изображения через BitmapImage:

Image cameraImage=new Image(); 
BitmapImage bImage=new BitmapImage(); 
    private void CaptureImageAvailable(object sender, ContentReadyEventArgs e) 
    { 

     bImage.SetSource(e.ImageStream); 
     cameraImage.Source = bImage; 
    } 

, но у меня есть ошибки на этапе bImage.SetSource (e.ImageStream);

Как я должен прочитать этот ImageStream?

Спасибо!

+1

Не могли бы вы указать ошибку? – Matt

+0

http://www.jeffblankenburg.com/2011/11/07/31-days-of-mango-day-7-raw-camera-data/ - это может помочь –

+0

Мне нужно использовать Deployment.Current.Dispatcher.BeginInvoke() – ShevninAnton

ответ

2

Нельзя присвоить имущество Source, если вы не находитесь в главной теме. И в этом случае вы не являетесь. Чтобы сделать это, просто заставить ссылающегося на него с помощью Dispatcher

Image cameraImage=new Image(); 
BitmapImage bImage=new BitmapImage(); 

private void CaptureImageAvailable(object sender, ContentReadyEventArgs e) 
{ 
    Dispatcher.BeginInvoke(()=> 
    { 
     bImage.SetSource(e.ImageStream); 
     cameraImage.Source = bImage; 
    }); 
} 

В случае, если вы не внутри страницы (например, вы находитесь внутри вид-модели или какой-либо другой класс не-UI), используйте следующий синтаксис:

Deployment.Current.Dispatcher.BeginInvoke(()=> 
{ 
    /* ... */ 
}); 
Смежные вопросы