2012-03-30 15 views
7

Próbuję zrobić zrzut ekranu z subklasyzowanego elementu XNA DrawingSurface z aplikacji silverlight 5. Ta aplikacja sl będzie działać na stronie aspx.Zrób zrzut ekranu przy użyciu silverlight 5/xna

Oto, co starałem dotąd bez powodzenia:

WriteableBitmap bmp = new WriteableBitmap(LayoutRoot, null); 
testImage.Source = bmp; 

z LayoutRoot jest kontrola rodzic na stronie silverlight i testImage jest tylko kontrola obrazu na stronie, aby zobaczyć, czy zrzut jest prawidłowy.

Spowoduje to, że wszystkie kontrolki silverlight na stronie będą w porządku, ale część rysunkowa pozostanie pusta. Innymi słowy, zawartość XNA nie jest renderowana na obrazie.

Próbowałem również renderować zawartość XNA do RenderTarget2D, ale wersja docelowa renderowania silverlight nie zawiera żadnych metod zapisywania danych. Widziałem niektóre przykłady WP7, które używały metody o nazwie SaveAsJpeg(), ale to nie wydaje się być dostępne w wersji SL5 tej klasy.

Byłbym wdzięczny za pomoc w tej sprawie.

Greets,

Floris

+0

A Texture2D klasy jakieś Zapisz metodę? – EdgarT

Odpowiedz

1

Jedną z możliwości byłoby zwrócić ekran w RenderTarget2D a następnie użyć metody SaveAsPng jak:

using (Stream stream = File.OpenWrite("filename.png")) 
{ 
renderTarget2D.SaveAsPng(stream, renderTarget2D.Width, renderTarget2D.Height); 
} 
+0

Bezużyteczne odpowiedzi na okna. Pytanie brzmi, jak uzyskać bitmapę w SL5 dla Windows? Metoda SaveAsPng nie jest dostępna! Jakieś pomysły? –