我遇到了一个问题,即我正在为非dpi识别进程编码,直到修复bug。
所以现在我需要做一个解决方案。我的想法是:弄清楚放大系数,并将我的元素宽度/高度按比例缩小。
所以现在我正在绘制第二个显示器的全宽和高度的画布,它是1920 x 1080
(WxH)。但是,视觉上(通过截屏后的photoshop衡量)它将成为2880 x 1620
。这是1.5的放大系数(2880除以1920或1620除以1080)。
我尝试使用GetDeviceCaps
和EnumDisplaysettings
的方法获取dpi,但所有方法都返回了主监视器的方法(注意:EnumDisplaySettings
设置dmLogPixels
我认为是DPI如果EnumDisplaySettings
使用ENUM_REGISTRY_SETTINGS
的constnat,则为0,因此我必须使用ENUM_CURRENT_SETTINGS
)。
我发现回复方式不同的唯一方法是GetDpiForMonitor
MONITOR_DPI_TYPE
constnat MDT_Angular_DPI
或MDT_Raw_DPI
,如果我使用MDT_Effective_DPI
它会给出{初级监视器。
现在这是我运行GetDpiForMonitor
:
没有一个次要值除以主要值给我一个放大因子1.5。无论如何都要获得这个比例因子吗?
由于
答案 0 :(得分:0)
我刚才有了一个想法,但是它有效我用这里提出的三种方法中的任何一种来获得缩放的高度/宽度:Improper width and height for second monitor from GetMonitorInfo and GetDeviceCaps
GetDeviceCaps
或上hdcScreen
GetMonitorInfo
或EnumDisplayMonitors
然后我将它除以EnumDisplaySettings
的宽度/高度。
这是我发现的唯一方法,还有其他办法吗?专家可以验证吗。