Сделайте снимок экрана с помощью silverlight 5 / xna

Я пытаюсь сделать снимок экрана подкласса элемента XNA DrawingSurface из приложения silverlight 5. Это приложение sl будет работать на странице aspx.

Вот что я до сих пор безуспешно пробовал:

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

с LayoutRoot, являющимся родительским элементом управления на странице silverlight, а testImage - это просто элемент управления Image на странице, чтобы проверить правильность снимка экрана.

В результате все элементы управления silverlight на странице будут отображаться нормально, но поверхность рисунка останется пустой. Другими словами, содержимое XNA не отображается в изображении.

Я также попытался отрендерить содержимое XNA в RenderTarget2D, но версия цели отрисовки silverlight, похоже, не имеет каких-либо методов для сохранения данных. Я видел несколько примеров WP7, в которых использовался метод SaveAsJpeg (), но, похоже, он недоступен в версии класса SL5.

Буду признателен за любую помощь с этим.

Приветствую,

Флорис


person Floris Groen    schedule 30.03.2012    source источник
comment
А у класса Texture2D есть какой-нибудь метод Save?   -  person EdgarT    schedule 05.09.2012


Ответы (1)


Одна из возможностей - нарисовать ваш экран в RenderTarget2D, а затем использовать метод SaveAsPng, например:

using (Stream stream = File.OpenWrite("filename.png"))
{
renderTarget2D.SaveAsPng(stream, renderTarget2D.Width, renderTarget2D.Height);
}
person ares_games    schedule 21.01.2013
comment
Бесполезный ответ для windows. Вопрос в том, как получить растровое изображение в SL5 для windows? Метод SaveAsPng недоступен! Любые идеи? - person Eugene Hoza; 13.05.2014