我在Windows窗体中创建了一个基于图块的大型地图。目前,我正在通过将平铺精灵合并为大图像并将其放置在与窗体大小相同的图片框中来创建100 x 100平铺地图(每个平铺为50x50像素)。其中一个 这个游戏的功能是以图片框的形式将城市放置在这张地图上。该 当我尝试输入地图上的位置时会出现问题。
当我在地图的左上角输入城市的所需网格位置时,城市将按以下方式显示:
Entering coordinates without scrolling
Result of entering cooridnates without scrolling
当我以任何方式滚动并尝试将城市放置在同一位置时,表单将城市图片框放置在地图之外,并将表单拉伸到适合其认为城市图片框所在的位置:
Entering coordinates with scrolling
The Forms stretches and places the city way off the map
以下是我用于放置城市图片框的代码行:
new_city.Location = new System.Drawing.Point(((add_city_x * 50)) + 20,
((add_city_y * 50)) + 20);
其中add_city_x和add_city_y是用户输入的坐标,* 50是每个图块的大小,+ 20是每个图块的偏移量,为下拉菜单腾出空间。
到目前为止,我已经尝试过:
设置图片框的最大尺寸。该程序仍将拉伸表单以添加图片框。
设置边框样式。这与之前的试验具有相同的影响。
通过将add_city * 50变量除以表格中的当前位置来补偿我在表单中的位置。 (我不确定我是否正确这样做,因此有关此程序的进一步建议可能会有所帮助。)
从表格中减去表格位置:(add_city_x * 50) - (this.Location.x * 50)+20。我对y位置做了同样的事情,这根本没有帮助解决问题。
据我所知,我知道代码从我在表单中滚动到的位置的角度计算位置计算。例如,如果我在窗体中垂直和水平地滚动了一半,然后尝试将一个城市添加到地图中,则表单将认为位置计算从我所在的位置的左上角开始,而不是从左上角开始。形式,导致形式被拉伸以适应程序认为应添加城市图片框的位置。我正在寻找的计算总是从表格的左上角开始,而不是从我在屏幕上滚动到的地方开始。