横向连线游戏:不同宽高比屏幕下点无拉伸同位置生成方案咨询
解决横向连线游戏跨设备图形无拉伸显示的方案
核心思路是保持原始坐标的比例,做等比缩放+居中对齐,这是避免图形拉伸的标准解决方案,你的思路方向是对的,一点都不复杂,具体落地步骤如下:
- 明确基准画布:你的JSON坐标范围是0-1000,相当于原始基准画布是1000×1000的正方形,比例为1:1。
- 计算适配缩放比例:
- 获取横向模式下屏幕的实际可绘制区域尺寸(注意扣除状态栏、导航栏等系统占用区域)
- 分别计算宽、高方向的缩放系数:
- 宽度系数:
屏幕可用宽度 / 1000 - 高度系数:
屏幕可用高度 / 1000
- 宽度系数:
- 取两个系数里较小的那个作为最终缩放比例(保证整个1000×1000的图形能完整显示在屏幕内,不会超出边界)
- 计算居中偏移量:
缩放后的图形宽高均为1000 × 缩放比例,然后计算屏幕中心的偏移值:- X轴偏移 = (屏幕可用宽度 - 缩放后图形宽度) / 2
- Y轴偏移 = (屏幕可用高度 - 缩放后图形高度) / 2
- 坐标转换公式:
把JSON里的原始坐标(x, y)转换成屏幕实际绘制坐标:screenX = X轴偏移 + x * 缩放比例 screenY = Y轴偏移 + y * 缩放比例
你提到的“在屏幕中间创建不可见矩形”的思路,本质和这个逻辑完全一致——先锚定基准画布,再按比例缩放到屏幕可容纳的最大尺寸后居中。不需要额外去“获取矩形内特定点”,直接用上面的坐标转换公式就能完成映射,所有设备上的图形比例会完全一致,不会出现4:3和21:9屏幕的拉伸差异。
额外补充两个细节:
- 如果后续调整了基准画布的宽高比(比如不是1:1),只需要用原始画布的宽高比替代1:1,重复上述步骤即可
- 监听屏幕尺寸变化(比如旋转、分屏),实时重新计算缩放比例和偏移量,保证图形始终适配当前视口
内容的提问来源于stack exchange,提问作者System Requirements
相关产品推荐
相关产品推荐

