【发布时间】: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 值之间存在误解。
标签: c# xna scale resolution monogame