Question

Qu'est-ce que je suis arrivé est quelque chose comme une capture d'écran faisant application. (Réussi à sérialiser, Dieu merci !!!) Quand un bouton est cliqué une capture d'écran est prise en accédant à la méthode d'une manipulation classe. maintenant la partie la plus délicate est que la classe a un autre procédé pour faire fonctionner avec le résultat indiqué ci-dessus, de telle sorte que lorsque la méthode de traitement respective est appelée, une fenêtre est créée (représentée) et l'image bitmap doit aller dans un récipient d'affichage cette fenêtre. Le problème est que jusqu'à présent, je l'ai remarqué que dans WPF la source de contrôle d'image ne peut pas être attribuited à une variable qui stocke l'image. Comment puis-je afficher l'image stockée dans cette variable sans avoir à elle d'abord enregistrer, obtenir uri, etc. ?

Était-ce utile?

La solution

Vous devez créer une image à partir d'un flux de mémoire, cela a été bien documenté par de nombreuses personnes. Voici deux liens qui peuvent vous aider à démarrer:

http://forums.silverlight.net/forums/p/44637/ 166282.aspx

http://www.wpftutorial.net/Images.html

Autres conseils

Merci pour les liens slugster. Voici comment je l'ai fait:

MemoryStream ms = new MemoryStream();
sBmp = gBmp; //note: gBmp is a variable that stores the captured image and passes it on to the method that uses sBMP as a distribuitor of the variable holding the captured image data
//variable that holds image
sBmp.Save(ms,ImageFormat.Bmp);
//my buffer byte
byte[] buffer = ms.GetBuffer();
//Create new MemoryStream that has the contents of buffer
MemoryStream bufferPasser = new MemoryStream(buffer);
//Creates a window with parents classthatholdsthismethod and null
Edit childEdit = new Edit(this, null);
childEdit.Show();
//I create a new BitmapImage to work with
BitmapImage bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.StreamSource = bufferPasser;
bitmap.EndInit();
//I set the source of the image control type as the new BitmapImage created earlier.
childEdit.imgImageCanvas.Source = bitmap;
childEdit.Activate();

Je l'ai essentiellement combiné ce que j'avais trouvé sur ces pages avec quelques informations que j'ai trouvé sur la façon de passer un bmp à un memstream. Je suis arrivé que cela fonctionne 100%:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top