如何在Java中创建平铺贴图?
所以我有一个tile image tile.png,我正在尝试创建一个整个窗口的平铺贴图。我正在构建一个小程序。这是我的绘画方法看起来的样子,但它并不有效。当我运行小程序时,大约需要2秒钟,整个屏幕从左到右绘制图像,而不是一次渲染所有内容。而且,它看起来像一个大的tile.png,而不是40个小的tile.png实例如何在Java中创建平铺贴图?,java,2d,maps,Java,2d,Maps,所以我有一个tile image tile.png,我正在尝试创建一个整个窗口的平铺贴图。我正在构建一个小程序。这是我的绘画方法看起来的样子,但它并不有效。当我运行小程序时,大约需要2秒钟,整个屏幕从左到右绘制图像,而不是一次渲染所有内容。而且,它看起来像一个大的tile.png,而不是40个小的tile.png实例 public void paint(Graphics g) { Image tile=getImg("tile.png"); int width=this.getW
public void paint(Graphics g)
{
Image tile=getImg("tile.png");
int width=this.getWidth();
int height=this.getHeight();
int x;
int y;
for (x=0; x<= width; x++)
{
for (y=0; y<= height; y++)
{
g.drawImage(tile, x, y, this);
}
}
}
public void绘制(图形g)
{
Image tile=getImg(“tile.png”);
int width=this.getWidth();
int height=this.getHeight();
int x;
int-y;
对于(x=0;xfor(x=0;x作为旁注,您可能希望在某个点开始检查“剪辑区域”,而不是在该区域之外绘制内容。您的代码设置得非常好,可以做到这一点
另一个可以加速的方法是“双缓冲区”。创建一个与地图大小相同的组件,为该组件调用getGraphics(),对这个新图形对象进行所有绘制,然后将组件绘制到传递到绘制方法中的真实图形对象
这样做的一个好处是,您可以在绘制语句之前绘制整个地图,然后立即将其删除
谷歌Java双缓冲获取更多信息。它看起来更好,但不太正确……我希望每个磁贴都能与其他磁贴区分开来……太好了,我将tile.png文件大小增加到25x25,并在其周围创建了一个边框,看起来正是我现在想要的。谢谢!
for (x=0; x<= width / tileWidth; x++)
{
for (y=0; y<= height / tileHeight ; y++)
{
g.drawImage(tile, x * tileWidth, y * tileHeight, this);
}
}