windows 截图可以使用 windows 自带的,也可以使用 QQ 等辅助工具截图,效果还是可以的。我想请教各位大神一个问题,windows 通过 API 截图是拿的哪里的数据,这可能与 windows 刷新屏幕有关系了,windows 是直接从屏幕直接截取,还是从内存中直接获取。这么说有些抽象,比如屏幕刷新率是 1HZ (例子而已),那就是一秒屏幕更新一下,此时有个程序每隔 0.1 秒向控制台输出当前毫秒时间戳,那此时使用截图工具,截到图片的时间戳会不会一秒内截图的十张图片一样,还是十张不一样。我尝试使用软件去验证,但不存在可操作性,希望有大哥指教一二
刚才是试了一下,当我把 HDMI 线拔了后,进行截图,可以截图,截图内容与为拔截图内容一样,只有时间不一样。证明 windows 会继续上一屏幕进行截图,此时显卡有输出。其实这并没有解答我的疑问,windows 截图的内容来源是哪里? 1. Windows 通过自身 API 调用显卡内存,再输出我们看得到的图片; 2. Windows 根据自身 UI 句柄或其他方式,再不调用显存的情况下直接截图。如果是按照显存来的话,按照大家所说相当于显存是实时更新的,更新的频率就根据显卡性能来定,Windows 前往显存去抓取,至于显示器是多少 hz 则由显卡根据设定的 hz 从显存中获取数据后输出到显示器。不知道我这个理解对不对?
cool1205
2020-12-31 12:12:02 +08:00
不用任何第三方截图软件,我认为 windows 自身的 API 必定是最快的。若真有这种代码存在,请大家推荐完全不调用 windows 自身 API 的方式,我试过几种,都是在 windows 自身 API 上做了一些封装而已,这种方式只会增加程序截图的时间,若对实时性要求不高的场景可以使用,但我对实时性要求很高。