2011-01-18 2 views
0

Чтобы написать руководство пользователя для моего приложения, мне нужно сделать несколько скриншотов из эмулятора Microsoft Surface.Как сделать снимок экрана с эмулятора Microsoft Surface?

Как я могу это сделать? Конечно, я мог бы сделать снимок экрана в своей ОС, а затем разрезать изображение в редакторе фотографий, но нет ли более простого способа?

ответ

2

Итак, наконец, я нашел хороший способ сделать это:

class ScreenshotTaker 
    { 
     public static void TakeScreenshot(Visual target) 
     { 
      String fileName = "Screenshot-" + DateTime.UtcNow.ToString().Replace(" ", "-").Replace(".", "_").Replace(":", "_") + ".tiff"; 
      Console.WriteLine("Try to take screenshot: " + fileName); 
      FileStream stream = new FileStream(fileName, FileMode.Create); 
      TiffBitmapEncoder encoder = new TiffBitmapEncoder(); 
      encoder.Frames.Add(BitmapFrame.Create(GetScreenShot(target))); 
      encoder.Save(stream); 
      stream.Flush(); 
      stream.Close(); 
      Console.WriteLine("Screenshot taken"); 
     } 

     private static BitmapSource GetScreenShot(Visual target) 
     { 
      Rect bounds = VisualTreeHelper.GetDescendantBounds(target); 
      RenderTargetBitmap bitmap = new RenderTargetBitmap(1024, 768, 96, 96, PixelFormats.Pbgra32); 

      DrawingVisual drawingvisual = new DrawingVisual(); 

      using (DrawingContext context = drawingvisual.RenderOpen()) 
      { 
       context.DrawRectangle(new VisualBrush(target), null, new Rect(new Point(), bounds.Size)); 
       context.Close(); 
      } 

      bitmap.Render(drawingvisual); 
      return bitmap; 
     } 

    } 
Смежные вопросы