gpt4 book ai didi

c# - 我怎样才能得到我所有显示器的比例因子?

转载 作者:太空宇宙 更新时间:2023-11-03 14:38:30 24 4
gpt4 key购买 nike

Microsoft 不知道如何帮助我,所以我不得不在这里问。

我有三个显示器...

  • 屏幕 1:3840 x 2160,缩放比例 150%
  • 屏幕 2:1920 x 1200,缩放 100%
  • 屏幕 3:1920 x 1200,缩放 100%

我需要在 VB.netC# 中获取每个显示器的缩放比例。

Microsoft 建议我使用此代码:

Private Declare Function GetDeviceCaps Lib "gdi32.dll" (hdc As IntPtr, nIndex As Integer) As Integer

Public Enum DeviceCap
VERTRES = 10
DESKTOPVERTRES = 117
End Enum

Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
For Each screen As Forms.Screen In Forms.Screen.AllScreens
Dim pnt = New System.Drawing.Point(screen.Bounds.Left + 1, screen.Bounds.Top + 1)
Dim mon = MonitorFromPoint(pnt, 2)
Dim fac As Single = GetScalingFactor(mon)
Console.WriteLine($"Factor: {fac}")
Next
End Sub

Private Function GetScalingFactor(monitorHandle As IntPtr) As Single
Dim g As Graphics = Graphics.FromHwnd(IntPtr.Zero)
Dim desktop As IntPtr = g.GetHdc()
Dim LogicalScreenHeight As Integer = GetDeviceCaps(desktop, CInt(DeviceCap.VERTRES))
Dim PhysicalScreenHeight As Integer = GetDeviceCaps(desktop, CInt(DeviceCap.DESKTOPVERTRES))
Dim ScreenScalingFactor As Single = CSng(PhysicalScreenHeight) / CSng(LogicalScreenHeight)
Return ScreenScalingFactor
End Function

但它会为我的所有屏幕返回 1 的比例。

我需要它独立于我的应用程序是否是 dpiAware,所以我必须以某种方式从屏幕控制面板读取它。

该解决方案必须适用于 Windows 10 和 Windows Server 2012 R2 远程桌面客户端。

最佳答案

我相信你可以使用 ResolutionScale DisplayInformation 中的属性(property)类(class)。这会为您检索一个带有比例因子的枚举,但我不知道它是否独立于 dpiAware。

关于c# - 我怎样才能得到我所有显示器的比例因子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58971670/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com