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

C# 以指定的分辨率拍摄屏幕截图,c#,.net,C#,.net,我正在考虑是否可能创建一个应用程序,允许我以指定的分辨率拍摄特定窗口(在本例中为浏览器)的屏幕截图 我真的不想改变显示器的分辨率。我想做的是能够得到一个屏幕截图,因为它会出现在800x600,1024x768等 我知道如何使用.net/c截图,但我想知道是否有办法“欺骗”它以不同的分辨率截图(可能没有,但我想我还是会问,所以请原谅这个可能愚蠢的问题) 干杯好吧,如果你的意思是,在分辨率为800x600的情况下,做一个所有东西的屏幕截图。你不能那样做。因为Windows会使一切变得更大,重新定位图

我正在考虑是否可能创建一个应用程序,允许我以指定的分辨率拍摄特定窗口(在本例中为浏览器)的屏幕截图

我真的不想改变显示器的分辨率。我想做的是能够得到一个屏幕截图,因为它会出现在800x600,1024x768等

我知道如何使用.net/c截图,但我想知道是否有办法“欺骗”它以不同的分辨率截图(可能没有,但我想我还是会问,所以请原谅这个可能愚蠢的问题)


干杯

好吧,如果你的意思是,在分辨率为800x600的情况下,做一个所有东西的屏幕截图。你不能那样做。因为Windows会使一切变得更大,重新定位图标等等


如果你的意思是将一个屏幕截图调整为另一个分辨率,那么这在C#中非常简单,也很容易获得。

如果你的意思是制作一个屏幕截图,说明当分辨率为800x600时,一切都会是什么样子。你不能那样做。因为Windows会使一切变得更大,重新定位图标等等

如果你的意思是将一个屏幕截图调整到另一个分辨率,这在C#中是相当简单且容易获得的。

查看你的评论:“我很想知道某个特定页面的布局是否在任何分辨率下都会出现视觉上的断裂”,只制作屏幕截图是错误的做法。可能在你们的程序中,我刚刚从帖子中扣除,你们有动态布局,你们想根据不同的分辨率进行测试,看看其中的用户体验

  • 我不认为,这是一个很好的解决方案,使自动化,只是尝试手动,因为许多东西只是通过查看图像无法计算出来

  • 顺便说一下,如果您想这样做:

    以下是如何从代码更改屏幕分辨率的示例:

  • 下面是如何根据坐标从屏幕上获取屏幕快照的代码。因此,使用小技巧,您也可以在活动窗口上进行:

    换句话说,若我不明白你们真正想要的是什么,先改变屏幕的分辨率,然后拍快照

    希望这能有所帮助。

    看看你的评论:“我很想知道某个特定页面的布局是否在任何分辨率下都会出现视觉上的中断”,只做屏幕截图是错误的做法。可能在你们的程序中,我刚刚从帖子中扣除,你们有动态布局,你们想根据不同的分辨率进行测试,看看其中的用户体验

  • 我不认为,这是一个很好的解决方案,使自动化,只是尝试手动,因为许多东西只是通过查看图像无法计算出来

  • 顺便说一下,如果您想这样做:

    以下是如何从代码更改屏幕分辨率的示例:

  • 下面是如何根据坐标从屏幕上获取屏幕快照的代码。因此,使用小技巧,您也可以在活动窗口上进行:

    换句话说,若我不明白你们真正想要的是什么,先改变屏幕的分辨率,然后拍快照


    希望这能有所帮助。

    截图并以所需的分辨率保存原始图像

    下面是演示此想法的代码片段:

    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);
    

    拍摄屏幕截图并以所需的分辨率保存原始图像

    下面是演示此想法的代码片段:

    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);
    

    只需将相关窗口的大小调整为800x600,并仅捕获该窗口。生成的图像将是800x600。我想有一种方法可以通过编程实现这一点吗?它是在.NET framework中还是我将深入研究winapi?只需将相关窗口调整为800x600并仅捕获该窗口。生成的图像将是800x600。我想有一种方法可以通过编程实现这一点吗?它是在.NET框架中还是我将深入研究winapi?我指的是你提到的第一件事。它看起来像800x600。我很想知道某个特定页面的布局是否在任何分辨率下都会出现视觉中断。我是指你提到的第一件事。它看起来像800x600。我很想知道一个特定页面的布局是否在任何分辨率下都会出现视觉上的中断。我不需要在每个分辨率下对站点进行详细检查,只需快速浏览一下,因为详细检查将在稍后完成。所以现在,我只需要一张截图就可以快速概述一下。我的主要兴趣是判断每个分辨率下的空白量,而不是检查出现的html细微差别。Cheers我不需要在每次解析时对站点进行详细检查,只需快速浏览一下,因为详细检查将在稍后完成。所以现在,我只需要一张截图就可以快速概述一下。我的主要兴趣是判断每个分辨率下的空白量,而不是检查出现的html细微差别。Cheers@Eranga大概那又怎么样?这只是为了证明idea@Eranga大概那又怎么样?这只是为了证明这个想法