2017-01-20 15 views
2

Я работаю над решением, которое захватывает скриншот и сохраняет его в виде изображения через регулярные промежутки времени. Это приложение построено в Windows Forms.Как получить размер экрана монитора в приложении Windows Form для захвата снимков экрана?

Я использовал ниже код, чтобы получить разрешение экрана -:

int h = Screen.PrimaryScreen.WorkingArea.Height; 
int w = Screen.PrimaryScreen.WorkingArea.Width; 

Это прекрасно работает в ноутбуке с разрешением 1366 * 768.

Но изображение обрезается с правой и нижней стороны, когда одно и то же приложение выполняется на очень большом мониторе.

Есть ли способ обработать размер монитора в коде.

+0

[ «Рабочая область является областью рабочего стола на дисплее, за исключением панели задач, стыковка окна и стыковка панелей инструментов.» ] (https://msdn.microsoft.com/en-us/library/system.windows.forms.screen.workingarea). ['ScreenCounds'] (https://msdn.microsoft.com/en-us/library/system.windows.forms.screen.bounds) можно использовать вместо этого, чтобы получить весь экран – Slai

ответ

1

Предполагая, что вы хотите захватить экран, содержащий форму, используйте Screen.FromControl method, передав ему экземпляр формы, а затем используйте WorkingArea этого экрана.

Если это предположение неверно, добавьте более подробную информацию к вашему вопросу.

0

Этот код делает несколько экранов ... его, что я использую ...

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Drawing; 
using System.Drawing.Imaging; 
using System.Windows.Forms; 
using System.IO; 

namespace JeremyThompsonLabs 
{ 
    public class Screenshot 
    { 
     public static string TakeScreenshotReturnFilePath() 
     { 
      int screenLeft = SystemInformation.VirtualScreen.Left; 
      int screenTop = SystemInformation.VirtualScreen.Top; 
      int screenWidth = SystemInformation.VirtualScreen.Width; 
      int screenHeight = SystemInformation.VirtualScreen.Height; 

      // Create a bitmap of the appropriate size to receive the screenshot. 
      using (Bitmap bitmap = new Bitmap(screenWidth, screenHeight)) 
      { 
       // Draw the screenshot into our bitmap. 
       using (Graphics g = Graphics.FromImage(bitmap)) 
       { 
        g.CopyFromScreen(screenLeft, screenTop, 0, 0, bitmap.Size); 
       } 

       var uniqueFileName = Path.Combine(System.IO.Path.GetTempPath(), Path.GetRandomFileName().Replace(".", string.Empty) + ".jpeg"); 
       try 
       { 
        bitmap.Save(uniqueFileName, ImageFormat.Jpeg); 
       } 
       catch (Exception ex) 
       { 
        return string.Empty; 
       } 
       return uniqueFileName; 
      } 
     } 

    } 
}