Создание скриншота - C#
Формулировка задачи:
Доброго времени.
Есть такой кодУ меня матрица FullHD, разрешение тоже 1920х1080. При коде (с пометкой "//*" скриншот получается обрезанным - вместо 1920х1080 выходит 1536х864 (Вообще странное разрешение).
А если выбрать код (с пометкой "//**"), то все работает вроде нормально, но как быть, если программу надо запускать еа разных компьютерах с разными разрешениями?
пробовал несколько кодов, но результата нет.
Такой, к примеру, тоже не работает:и этот тоже не работает
Graphics graph = null; var bmp = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); //* // var bmp = new Bitmap(1920, 1080); //** graph = Graphics.FromImage(bmp); graph.CopyFromScreen(0, 0, 0, 0,bmp.Size); bmp.Save("filename.bmp");
string arg = DateTime.Now.ToString("dd.MM.yyyy_HH.mm.ss"); Thread.Sleep(300); Size size = Screen.PrimaryScreen.Bounds.Size; Bitmap bitmap = new Bitmap(size.Width, size.Height); using (Graphics graphics = Graphics.FromImage(bitmap)) { graphics.CopyFromScreen(Point.Empty, Point.Empty, size); string filename = string.Format("{0}\\{1}.jpg", Environment.GetFolderPath(Environment.SpecialFolder.Desktop), arg); bitmap.Save(filename, ImageFormat.Jpeg); }
Bitmap bmp = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppRgb); using (Graphics gr = Graphics.FromImage(bmp)) { gr.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy); } return bmp;
Решение задачи: «Создание скриншота»
textual
Листинг программы
using Microsoft.Win32; ... static Size GetTrueScreenSize(Screen screen) { //get system DPI var systemDPI = (int)Registry.GetValue("HKEY_CURRENT_USER\\Control Panel\\Desktop", "LogPixels", 96); using (var graphics = Graphics.FromHwnd(IntPtr.Zero)) { //get graphics DPI var dpiX = graphics.DpiX; var dpiY = graphics.DpiY; //get true screen size var w = (int)Math.Round(screen.Bounds.Width * systemDPI / dpiX); var h = (int)Math.Round(screen.Bounds.Height * systemDPI / dpiY); return new Size(w, h); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д