Winapi 调整窗口大小,使其显示更大,并从中捕获图像

Winapi 调整窗口大小,使其显示更大,并从中捕获图像,winapi,screen-resolution,Winapi,Screen Resolution,有一个程序,显示一些动画。我需要捕捉它,在高分辨率(2k)投影仪上显示它。我的显示器具有全高清(1920x1080)分辨率,因此从中捕获的视频将被缩放,从而降低2k投影仪的质量 不幸的是,我不能在投影仪上录制 我试图通过下一个代码更改显示分辨率: DEVMODE devmode; devmode.dmPelsWidth = 2000; devmode.dmPelsHeight = 900; devmode.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT; devm

有一个程序,显示一些动画。我需要捕捉它,在高分辨率(2k)投影仪上显示它。我的显示器具有全高清(1920x1080)分辨率,因此从中捕获的视频将被缩放,从而降低2k投影仪的质量

不幸的是,我不能在投影仪上录制

我试图通过下一个代码更改显示分辨率:

DEVMODE devmode;
devmode.dmPelsWidth = 2000;
devmode.dmPelsHeight = 900;
devmode.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
devmode.dmSize = sizeof(DEVMODE);

long result = ChangeDisplaySettings(&devmode, 0);
但如果设置的分辨率高于显示器的分辨率,则会失败

我还试图调整程序窗口的大小。我通过
FindWindow
找到了它,然后调整了大小。虽然窗口已调整大小,但渲染区域与显示大小相等,并且所有超出范围的内容都不会更新

我唯一的想法就是以我需要的分辨率在虚拟机下运行程序

也许有办法调整窗口大小,然后像图像一样缩小它?物理上,它很小,但它本身就具有高分辨率

如果要尝试访问进程内存并尝试查找位图或类似的内容,该怎么办

有什么想法吗


更新

我发现了一个按钮,即使窗口的一部分在不可见区域,它也能生成正确的屏幕截图。单击后,将打开默认的Windows另存为对话框。显然,我可以制作一个程序,点击按钮,将文件名增加1,然后点击保存按钮,但是我会丢失很多帧


打赌,要保存的位图是在显示对话框之前创建的。也许我能抓住它。在我按下屏幕截图按钮之前和之后,我检查了GDI对象的计数,不幸的是,两者之间的差异大约是20个元素,可能是因为保存对话框窗口对象也在计数。

AMD图形卡有一种称为虚拟超分辨率的功能,它允许您将显示放大到虚拟2k,甚至4k。您的捕获将是2k,并在1080p面板上缩小。我认为NVIDIA也有这一功能,尽管我不知道它是如何命名的。

此外,2000x900不是2K的默认分辨率。对于16:9纵横比,最常见的像素大小是2560x1440。官方电影标准为2048x1080(稍宽一点)。(除非这是投影仪上指定的分辨率。在我的电脑上找不到任何类似的东西,我有IntelDoes VSR允许您实际捕获高分辨率渲染?我想是的。它会更改您的电脑渲染显示器的分辨率。例如,如果您要高达4k并拍摄屏幕截图,则需要4k屏幕截图和n。)不是1080p的。另外,我认为在他的情况下,提高分辨率也不会有帮助,因为is投影仪的垂直像素数低于显示器的像素数。因此,我认为它要么会被拉伸,要么会被缩小。@isagsadvb我在reddit上找到了这篇文章。它应该会对你有所帮助。