gpt4 book ai didi

c++ - 如何在 Windows 中获取屏幕比例?

转载 作者:可可西里 更新时间:2023-11-01 09:32:30 28 4
gpt4 key购买 nike

我正在编写一个 Windows 程序,它允许用户在 1920*1080 和 3840*2160 之间切换分辨率,这意味着在 FHD 和 4K 之间切换。

我尝试使用“GetSystemMetrics”来获取当前分辨率。

//Algorithm #1
//Get current resolution and resolution scaling.
xScreenResolution = GetSystemMetrics(SM_CXSCREEN);
yScreenResolution = GetSystemMetrics(SM_CYSCREEN);
cout << "Current Resolution is: " << xScreenResolution << "x" << yScreenResolution << endl;

例如,如果我使用的是 3840*2160 的分辨率,我希望程序会给我 3840*2160 的分辨率。但是,程序只输出 1536x864,这是 Windows 执行缩放后的分辨率。

所以我想知道如何以编程方式获取比例因子(100%、200%、250% 等),就像 Windows 10 中的显示设置一样。 display settings in Windows 10

最佳答案

您的应用程序似乎收到了虚拟化的 DPI 数据。要接收正确的指标,您需要提供适当的应用程序 list ,包括高 DPI 支持和系统兼容性条目。参见 High DPI .

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">True/PM</dpiAware>
</windowsSettings>
</application>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
</application>
</compatibility>
</assembly>

要进行缩放,您可以调用 GetDpiForMonitor .

关于c++ - 如何在 Windows 中获取屏幕比例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46582226/

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