我在JPanel
上绘制了一个2D瓦片图(由25个瓦片组成,每个瓦片30*30像素(。如何获取每个瓦片的直角坐标?
"基本"方法可能是做一些类似。。。
int tileWidth = 30;
int tileHeight = 30;
// Coordinates in the physical world, like a mouse point for example...
int x = ...;
int y = ...;
int col = (int)Math.floor(x / (double)tileWidth);
int row = (int)Math.floor(y / (double)tileHeight);
这将返回基于物理x/y坐标的每个瓦片的虚拟网格x/y位置
然后你可以使用类似。。。
int tileX = col * tileWidth;
int tileY = row * tileHeight;
瓦片矩形然后变为tileX
x tileY
x tileWidth
x tileHeight
现在,当这起作用的时候。一个更好的解决方案是使用类似java.awt.Rectangle
的东西,并维护其中的List
,每个都代表现实世界中的单个瓦片。
然后,您可以使用Rectangle#contains
来确定给定的磁贴是否包含您要查找的坐标。
这样做的另一个好处是,Rectangle
可以使用Graphics2D#draw
和/或Graphics2D#fill
打印