由于缩放问题,Windows screencopy .net api 无法按预期工作

问题描述 投票:0回答:1

使用以下内容,我可以将当前窗口的屏幕截图放入位图对象中

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 连接时,这种情况始终会发生。

因此,我似乎应该考虑比例因素并以稍微不同的方式完成任务。上述所有值均指像素数,我本以为无论如何都适用,但似乎并非如此。

我尝试搜索缩放相关文档,但没有成功。我可能正在寻找错误的东西。

有人知道我应该做什么或者我应该在文档中查看什么?

.net rdp
1个回答
0
投票

使用 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
© www.soinside.com 2019 - 2024. All rights reserved.