GetDC / ReleaseDC未覆盖.NET

时间:2017-05-09 09:33:33

标签: c# .net vb.net winapi user32

我的主要编程设备是笔记本电脑。由于此笔记本电脑具有高分辨率屏幕,因此在Windows的显示设置中,我将“将文本,应用程序和其他项目的大小更改为”设置为200%。我正在开发一个在.NET中使用User32 API的应用程序,并使用以下代码在屏幕上绘制(我已修改代码只是在屏幕上放置随机颜色,但我的实际应用程序使用图像):

    <DllImport("User32.dll")>
    Public Shared Function GetDC(hwnd As IntPtr) As IntPtr
    End Function
    <DllImport("User32.dll")>
    Public Shared Sub ReleaseDC(hwnd As IntPtr, dc As IntPtr)
    End Sub
    <DllImport("user32.dll", SetLastError:=False)>
    Private Shared Function GetDesktopWindow() As IntPtr
    End Function
    Sub RandomPixels()
Dim desktopPtr As IntPtr = GetDC(GetDesktopWindow())
        Dim g As Graphics = Graphics.FromHdc(desktopPtr)
        For x = 0 To 1920
            For y = 0 To 1080
                Dim b As New SolidBrush(Color.FromArgb(255, rnd.Next(255), rnd.Next(255), rnd.Next(255)))
                g.FillRectangle(b, New Rectangle(x, y, 100, 100))
            Next

        Next
        g.Dispose()
        ReleaseDC(GetDesktopWindow(), desktopPtr)
End Sub

然而,这仅在屏幕的左上角绘制。通过实验,我发现只有当上面提到的设置不是100%时才会发生这种情况。

我花了几个小时搜索互联网,但什么都没找到,所以非常感谢帮助!

注意:因为这个问题基本上是关于Win32 API而不是特定语言,所以我不介意答案所用的语言(只要它在.NET中):)。

0 个答案:

没有答案