如何让一个窗口的大小能够在不同的分辨率下都能够维持肉眼看上去的同一大小

2019-10-16 09:14:19 +08:00
 NGPONG

比如说我恒定的设置一个应用的窗口大小为 800 * 800,在分辨率小的情况下我会看到这个应用占用屏幕比例很多,但是一换到高分辨率的情况下这个窗口的大小就会缩小了,我的目的是不管在什么分辨率的情况下,这个窗口的大小就直观来说还是一样的大小不变的,我的理解应该是这个窗口的 长 * 某个半分比 宽 * 某个百分比 来根据不同的分辨率来改变窗口的长和宽以来达到效果,但是我却不知道该如何计算这个 百分比

上张图吧,大家或许能够更好地理解一点

ht 占 tp 位 s://i.loli.net/2019/10/16/CQc5zS8Fk7HZprL.png

6711 次点击
所在节点    程序员
52 条回复
shoaly
2019-10-16 09:20:29 +08:00
老哥去搜一下, 屏幕尺子, 他们要实现的就是所有屏幕上都能显示出一把尺子. 根据像素和点距去换算的
TimFire
2019-10-16 09:23:44 +08:00
你可以试试改变分辨率,桌面图标大小会改变吗? 再比如说,你换个迷你小型显示器?应用窗口还是 800*800 大小吗?明显不会,只能自适应屏幕。
andychen20121130
2019-10-16 09:25:53 +08:00
你要用点用相对位置
NGPONG
2019-10-16 09:26:04 +08:00
@TimFire
你说的这个问题我明显是试验过才来 V2EX 上提问的

感谢提供了一个方向 @shoaly 不过或许有现成的代码参考或许会更好呢,比较赶时间
fancy111
2019-10-16 09:26:54 +08:00
你可能没搞清楚 800*800 这个就是代表分辨率。
你想实现你图中的效果也很容易,只要直接写死像素值,不随屏幕放大即可。
mx1700
2019-10-16 09:28:57 +08:00
获取显示器分辨率,再获取物理尺寸,自己算比例
NGPONG
2019-10-16 09:29:12 +08:00
@fancy111 我认为你们可能都没理解我表达的意思,你可以试试一个应用我写死 800 x 600 的 size,记住显示在屏幕上的具体的长宽(用尺子量),然后放在高分辨率的屏幕上看看这个应用还是不是刚刚用尺子量的长和宽了
uppu
2019-10-16 09:30:19 +08:00
有一个笨办法,每个分辨率下窗口大小设置好,然后根据分辨率调整大小。
NGPONG
2019-10-16 09:31:51 +08:00
@uppu 是的,这不失是一种途径,感谢,但是应用来说是面对过大群众,他们不单单是分辨率奇形怪色,还可能是 windows 缩放也会奇形怪色,比如说有些高分屏是 125%的缩放,这都会直接的影响到这个应用显示在屏幕上肉眼可观测的大小的
tempdban
2019-10-16 09:32:32 +08:00
找到 dpi,换算
zhanglihow
2019-10-16 09:33:37 +08:00
百分比不就是(当前屏幕分辨率 /你最开始的分辨率)
zycojamie
2019-10-16 09:35:10 +08:00
我是结合 rem,根据窗口大小动态改变 font-size 的
NGPONG
2019-10-16 09:35:45 +08:00
@zhanglihow 昨晚睡觉的时候想到的这种,正准备试验 : )
yoshiyuki
2019-10-16 09:35:49 +08:00
参考屏幕尺子,必须由用户主动上报屏幕尺寸才有可能,软件端一般无法获取精确的尺寸,虽然系统有这个 API 但是不可靠
NGPONG
2019-10-16 09:36:20 +08:00
@zycojamie 感谢提供参考
KillPaul
2019-10-16 09:46:28 +08:00
@zhanglihow 这样的话是不是像 iMac 这种视网膜的情况又不一样了呢
@NGPONG
KillPaul
2019-10-16 09:47:29 +08:00
@zhanglihow 而且你这种情况应该只适用于两台屏幕尺寸一模一样的设备吧
learnshare
2019-10-16 09:54:08 +08:00
用绝对(物理)尺寸,cm/mm/in/pt 这种
fancy111
2019-10-16 09:55:41 +08:00
@NGPONG 你这个涉及到两个数据,一个是屏幕像素,一个是屏幕尺寸。17 寸屏和 19 寸屏同样设置 2K 分辨率的话,像素大小肯定不一样。所以要实现你的效果,只能靠手动计算。一般主流屏都是固定尺寸
NGPONG
2019-10-16 10:02:18 +08:00
@learnshare 感谢,但不大理解你说的意思,可以再具体点吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/609755

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX