首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检测宽屏宽高比

检测宽屏宽高比
EN

Stack Overflow用户
提问于 2014-02-25 15:02:36
回答 1查看 377关注 0票数 0

这段代码试图计算出用户显示器大小的最佳窗口大小。为此,我尝试检测用户监视器的纵横比。

我使用的这个方法在4:3,16:9,16:10分辨率下工作正常,但在21:9分辨率下失败(转到默认情况下),因为2560 * 21 != 1920 * 9。如何在宽屏幕宽高比上正确检测宽高比?

dm.wdm.h是当前分辨率的宽度和高度

代码语言:javascript
运行
复制
if( dm.h * 4 == dm.w * 3 ) { // 4:3
    screen_width = 1024;
    screen_height = 768;
} else if( dm.h * 16 == dm.w * 9 ) { // 16:9
    screen_width = 1366;
    screen_height = 768;
} else if( dm.h * 16 == dm.w * 10 ) { // 16:10
    screen_width = 1440;
    screen_height = 900;
} else if( dm.h * 21 == dm.w * 9 ) { // 21:9
    screen_width = 1920;
    screen_height = 720;
} else {
    Printf( "Unknown aspect ratio. Defaulting to 1024x768\n" );
    screen_width = 1024;
    screen_height = 768;
}
EN

回答 1

Stack Overflow用户

发布于 2014-02-25 16:22:14

当前分辨率的宽度和高度与显示器的纵横比无关。例如,3个不同大小的显示器(例如4:3、16:10和16:12)都可以使用1024*768。

要获得实际的纵横比,您需要来自监视器本身的信息。大多数显示器都支持EDID (扩展显示识别数据),它包括显示器的活动显示区域、宽度和高度,单位为毫米。

当然,您不希望从原始EDID数据本身提取此信息-您需要一个API和/或库来提供最初从EDID获得的信息。我不知道您使用的是哪种操作系统;但如果有可用的库和/或API,我也不会感到惊讶。如果像多个显示器这样的东西让你的事情变得复杂,也不要感到惊讶(例如,我使用的是两个不同大小的显示器)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22006939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档