2016-12-16 51 views
0

我想在我的程序中有一個名爲「保存當前快照」的選項,其中我的程序界面的圖片被保存到所需的位置。這是供參考的目的,例如如果有人不想打開該程序查看他們已經收集到的結果。C#WPF - 如何保存程序界面當前視圖的屏幕截圖?

我已經有一個程序截圖功能,我只是不知道如何使用SaveFileDialog實現它來保存圖像。

截圖功能:

private static BitmapSource CopyScreen() 
     { 
      using (var screenBmp = new Bitmap(
       (int)SystemParameters.PrimaryScreenWidth, 
       (int)SystemParameters.PrimaryScreenHeight, 
       System.Drawing.Imaging.PixelFormat.Format32bppArgb)) 
      { 
       using (var bmpGraphics = Graphics.FromImage(screenBmp)) 
       { 
        bmpGraphics.CopyFromScreen(0, 0, 0, 0, screenBmp.Size); 
        return Imaging.CreateBitmapSourceFromHBitmap(
         screenBmp.GetHbitmap(), 
         IntPtr.Zero, 
         Int32Rect.Empty, 
         BitmapSizeOptions.FromEmptyOptions()); 
       } 
      } 
     } 

SaveFileDialog代碼:

SaveFileDialog saveImage = new SaveFileDialog(); 
saveImage.Filter = "Images|*.png;*.bmp;*.jpg"; 
saveImage.ShowDialog(); 

可能有人請幫助我將圖像保存到用戶選擇的位置? 謝謝。

+0

可能發表評論評論[如何截取WPF控件的截圖?](http://stackoverflow.com/questions/24466482/how-to-take-a-screenshot-of-a-wpf-control) – Zack

回答

0

您可以在評論中使用引用的代碼。

使用保存對話框,獲得所需的路徑和你一樣,通過@Zack

// If the file name is not an empty string open it for saving. 
if(saveImage.FileName != "") 
{ 
    System.IO.FileStream fs = System.IO.File.Open(saveImage.FileName, System.IO.FileMode.OpenOrCreate); 
    Screenshot.Save(fs, System.Drawing.Imaging.ImageFormat.Bmp); 
    fs.Close(); 
} 

我在手機上,從而無法進行檢查,如果有問題