计算当前分辨率的坐标

Posted

技术标签:

【中文标题】计算当前分辨率的坐标【英文标题】:Calculate coordinates for the current resolution 【发布时间】:2021-11-12 21:28:54 【问题描述】:

我尝试将游戏中的所有纹理调整为当前的显示分辨率。获取当前显示分辨​​率不是问题,已经有一个内置函数可以检测到它。问题,但我知道游戏已固定为全高清 (1920 x 1080),我需要将所有组件转换为当前分辨率。

例如棋盘的二维矩形向量为(420, 0, 1080, 1080),其中前两位表示从左上角算起的位置,后两位表示大小(sizeX, sizeY )。例如,要将前两个值转换为 2K (2560x1440) 的分辨率,您应该轻松地使用三元组:

X:

1920 .................................... 420

2560 ................................... x


(1920/2560) = (x / 420) => x = (2560/1920) * 420

x = 560

同样适用于 Y:

1440 .................................... y

1080 .................................... 0


y = (1080/1440) * 0

y = 0


然而,我遇到的问题是转换最后两个数字。我需要找到它们之间的关系以及可以轻松重新计算的分辨率。

有人能处理一下吗?

这个全高清 (420,0,1080,1080) 的游戏板的正确结果应该是 2K (560,0,1440,1440)

我尝试了 k_x = x_original / size_x_original 的比率

k_x = 1920/1080 => 1.77

然后使用三元组:

1920 ...................... 1.77

2560 ,,,,,,,,,,,,,,,,,,,,,,,, k_x_2K


k_x_2K = 2.36

Size_x_2K = 2560 / 2,36 => 1084,74 如您所见不起作用:(((应该出来 1440))

也许如果我计算正确,对于这些分辨率,板应该具有以下值:

高清 (1280x720) => (320,0,720,720)

全高清 (1920, 1080) => (420,0,1080,1080)

2K (2560x1440) => (560,0,1440,1440)

【问题讨论】:

k_x = x_original / size_x_original => k_x = 1920/1080 => 1.77 。但是size_x_original 不是 1080。1080 可能是 size_y。我认为 x/y 的比值与两种尺寸不同宽度的 with 值之间存在误解。 【参考方案1】:

您要问的是纵横比:x:y 或 x/y。

屏幕有各种形状和大小。

传统的非宽屏显示器是 5:4(1.25)。

高清电视的标准宽屏宽高比为 16:9(1.777...)。这些是较小的监视器变化,如 16:10 和其他,变化之间没有明显的拉伸。这将包括 UHD、2K 和 4K 电视。

某些显示器被归类为超宽显示器,增加水平分辨率而不增加垂直分辨率。你的 2.3 和现代电影一样属于这个范围。

对于我的游戏,我开发了 3 种布局,利用 UI 元素等的额外空间。

不要忘记横向和纵向模式。不要假设显示器的宽度大于高度。

【讨论】:

以上是关于计算当前分辨率的坐标的主要内容,如果未能解决你的问题,请参考以下文章

python依据经纬坐标计算两点距离并求图像横纵分辨率

Unity坐标转换

屏幕坐标和当前窗口坐标如何转换???

dem及全彩影像数据tif文件分辨率问题

关于把世界坐标投射到屏幕上转换为屏幕2D坐标

Surface Pro的最大X和Y触摸坐标为什么与原始显示分辨率不同?