如何在不同分辨率下获取同一位置的鼠标位置

How to get mouse position in the same place with different resolutions

我为大学开发了一款大富翁克隆游戏(玻利维亚大富翁)。 我将垄断板放入 Jpanel 并尝试使用 e.getX() 将鼠标位置精确定位到鼠标侦听器事件中。问题是我的游戏支持 800x600、1024x768、1680x1050 分辨率的战利品....当我有机会使用屏幕分辨率时,如何才能获得相同的位置点击?

最好的方法是不使用像素坐标,而是使用百分比坐标。

在屏幕截图中,您的板有顶部偏移和左侧偏移,以及宽度和高度。

对于当前鼠标x 位置,减去左侧偏移并除以游戏板的宽度。您将获得的 x 值将是:

小于0:鼠标在棋盘左边 0 和 1 之间:在棋盘上的相对位置(0 完全在左边,1 完全在右边) 大于一:鼠标位置在棋盘右侧。

同样适用于 y 位置。

如果您随后根据这些相对值进行所有裁剪计算,那么一切都应该独立于依赖项。

我认为你应该将每张图片放在不同的 JPanel 上。您可以使用 JLabel 添加图片。这样你就可以为每张图片添加听众。它将支持任何屏幕分辨率,如下所示 Layout Manager。此外,它将帮助您有逻辑地组织代码。