2010-07-31 6 views
1

Je voudrais créer le bitmap à partir de la collection BitmapSource et chaque source source doit être une image.Créer bitmap à partir de la collection de BitmapSources

j'ai écrit le code suivant

MemoryStream memStream = new MemoryStream(); 
BitmapEncoder enCoder = new GifBitmapEncoder(); 

foreach (BitmapSource source in BitmapSources) 
    enCoder.Frames.Add(BitmapFrame.Create(source)); 
enCoder.Save(memStream); 
_Bitmap = new DrawingCtrl.Bitmap(memStream); 

DrawingCtrl.ImageAnimator.Animate(_Bitmap, OnFrameChanged); 

et

private void OnFrameChangedInMainThread() 
{ 
    DrawingCtrl.ImageAnimator.UpdateFrames(_Bitmap); 
    Source = GetBitmapSource(_Bitmap); 
    InvalidateVisual(); 
} 

Mais il montre "Exception has been thrown by the target of an invocation.". Quelqu'un pourrait-il m'aider?

+0

En règle générale, la 'TargetInvocationException' (qui dit: « Une exception a été levée par la cible d'un appel ») est seulement une exception emballage. Si vous interceptez cette exception et regardez la propriété 'InnerException' sur l'objet d'exception, elle contient l'exception * effective *. Bien sûr, dans certains cas, vous pouvez avoir plusieurs couches de ce wrapping, utilisez donc une boucle while pour obtenir l'exception la plus interne. – Timwi

Répondre

0

Je ne sais pas BitmapSources dans WPF, mais je remarque une erreur dans la façon dont vous utilisez MemoryStream, alors peut-être c'est la question:

enCoder.Save(memStream); 

Cela écrire le contenu dans le flux de mémoire et laisser le pointeur de flux à la fin.

_Bitmap = new DrawingCtrl.Bitmap(memStream); 

Cela va alors essayer de lire le bitmap à partir du flux, à partir de la fin du flux. Bien sûr, cela ne peut pas fonctionner. Essayez d'ajouter un entre cherchent:

enCoder.Save(memStream); 
memStream.Seek(0, SeekOrigin.Begin); 
_Bitmap = new DrawingCtrl.Bitmap(memStream); 
+0

J'ai essayé votre réponse. Mais après avoir créé bitmap à nouveau, il montre une seule image. mais j'ai besoin de la collection de cadres. –

Questions connexes