我对此有点迷惑。我们有 ac#/WPF 屏幕捕获工具,它使用 Graphics.CopyFromScreen 抓取桌面的一部分。
它可以在几十种不同的机器上正常工作,包括 XP、Win7 和至少一个 Windows8 虚拟机。
我们遇到了一台装有 Win8 的 Acer ZS600,我们看到了一种我无法理解的奇怪效果。
当您捕获时,它会抓取正确大小但位置错误的图像。它向顶部和左侧偏移。不是固定数额。当捕获窗口位于屏幕 0,0 位置时很好,但是当您将捕获窗口从原点移开时,偏移量会增加。
我一直在查看代码,发现窗口位置(this.Top 和 this.Left)报告了错误的数字。
更奇怪的是,我们在 Acer Z5771 上进行了尝试,除了使用 Windows 7 外,它几乎与硬件设置相同。我们尝试更新 Zs600 图形驱动程序,但没有任何效果。
有没有人理解这一点,或建议修复或解决方法?
编辑:我整理了一个简单的应用程序,在问题机器上显示效果。在我的开发机器上它工作正常。在此处下载:https ://s3-eu-west-1.amazonaws.com/kdownload/Tools/CaptureTool_app.zip
或下载编译版本:https ://s3-eu-west-1.amazonaws.com/kdownload/Tools/capturetest.exe
编辑:这是问题系统上正在使用的捕获应用程序的两个屏幕截图。https://s3-eu-west-1.amazonaws.com/kdownload/Tools/ProblemScreencap.png(编辑 - 在那个屏幕截图中,我用宽度和高度切换了 x&y 的显示数字,现在已在上传的代码中修复,请忽略此)