使用以下内容,我可以将当前窗口的屏幕截图放入位图对象中
Function ScreenShotWindow() As Bitmap
Dim bmpScreenshot As Bitmap = New Bitmap(Me.Width, Me.Height)
Using g = Graphics.FromImage(bmpScreenshot)
g.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, Me.Size)
Return bmpScreenshot
End Using
End Function
(我重写了上面的示例以简化它,因此可能存在一个或两个语法错误)
当从控制台运行时,此技术在我的 PC 或其他 PC 上运行良好。但是,当我通过 RDP 执行相同的代码时,图像被“切碎”,这意味着位图小于窗口,并且缺少窗口底部和右侧的一些部分。通过 RDP 连接时,这种情况始终会发生。
因此,我似乎应该考虑比例因素并以稍微不同的方式完成任务。上述所有值均指像素数,我本以为无论如何都适用,但似乎并非如此。
我尝试搜索缩放相关文档,但没有成功。我可能正在寻找错误的东西。
有人知道我应该做什么或者我应该在文档中查看什么?
使用 Control.DrawToBitmap 方法。
我已经在本地和远程桌面计算机上测试了以下代码,它工作正常。在您的
Form
课堂上使用它。
Sub SaveWindowScreenshot(outputPath As String)
Using bmp = New Bitmap(Width, Height)
DrawToBitmap(bmp, New Rectangle(0, 0, bmp.Width, bmp.Height))
bmp.Save(outputPath)
End Using
End Sub