计算当前分辨率的坐标
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 元素等的额外空间。
不要忘记横向和纵向模式。不要假设显示器的宽度大于高度。
【讨论】:
以上是关于计算当前分辨率的坐标的主要内容,如果未能解决你的问题,请参考以下文章