以指定分辨率拍摄屏幕截图

时间:2011-07-20 11:12:12

标签: c# .net

我正在研究可能会创建一个应用程序,允许我以指定的分辨率截取特定窗口(在本例中为浏览器)的屏幕截图。

我真的不想真正改变我的显示器分辨率。我想做的是能够获得800x600,1024x768等的屏幕截图。

我知道如何使用.net / c#截取屏幕截图,但我想知道是否有办法“欺骗”它以不同的分辨率拍摄(可能没有,但我想我还是会问,请原谅潜在的愚蠢问题。)

干杯

3 个答案:

答案 0 :(得分:1)

截取屏幕截图并以所需分辨率保存原始图像。

这里是用于演示这个想法的代码片段:

Bitmap bmp_with_actual_resolution = new Bitmap(Screen.PrimaryScreen.Bounds.Size.Width, Screen.PrimaryScreen.Bounds.Size.Height);
Graphics g = Graphics.FromImage(bmp_with_actual_resolution);
g.CopyFromScreen(0, 0, 0, 0, Screen.PrimaryScreen.Bounds.Size);
Bitmap bmp_800_600 = new Bitmap(800, 600);
Graphics g_800_600 = Graphics.FromImage(bmp_800_600);
g_800_600.DrawImage(bmp_with_actual_resolution, 0, 0, 800, 600);
bmp_800_600.Save("D:\\file_800_600.jpg", ImageFormat.Bmp);
Bitmap bmp_1024_768 = new Bitmap(1024, 768);
Graphics g_1024_768 = Graphics.FromImage(bmp_1024_768);
g_1024_768.DrawImage(bmp_with_actual_resolution, 0, 0, 1024, 768);
bmp_1024_768.Save("D:\\file_1024_768.jpg", ImageFormat.Bmp);

答案 1 :(得分:0)

好吧,如果你的意思是截取当分辨率为800x600时一切都会看起来的截图。你不能这样做。因为Windows会使一切变得更大,所以重新定位图标等。

如果您的意思是将屏幕截图重新调整为另一种分辨率,这很简单,并且可以在C#中轻松使用。

答案 2 :(得分:0)

看你的评论:“我有兴趣知道特定页面的布局是否在任何分辨率下都是可视的”,只是屏幕截图是错误的方法。 Probbaly在你的porgram上,我只是从帖子中扣除,你有动态布局,你想针对不同的分辨率测试,以查看其中的UX。

  1. 我不认为,这是一个很好的解决方案,使自动化,只是手动尝试,因为很多东西只是通过查看图像无法弄清楚。

  2. 如果您顺便想要这样做:

    以下是如何从代码更改屏幕分辨率的示例:Screen resolution change from C#

  3. 以下是如何根据坐标从屏幕截取屏幕截图的代码。因此,通过小技巧,您也可以在活动窗口上进行操作:

    Capturing Screen in C#

    换句话说,如果我非常想要你想要的东西,首先要在制作快照之后更改屏幕的分辨率。

    希望这有帮助。