【问题标题】: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 值之间存在误解。

标签: c# xna scale resolution monogame


【解决方案1】:

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

屏幕有各种形状和大小。

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-16
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多