我正在实现一个棋盘游戏,其中每个玩家都有几个单位,每个单位都使用我使用以下方法从文件中读取的公共图像显示给用户。我在应用程序启动时阅读了这张图片,稍后将使用它。
private static BufferedImage readBufferedImage (String imagePath) {
try {
InputStream is = IconManager.class.getClassLoader().getResourceAsStream(imagePath);
BufferedImage bimage = ImageIO.read(is);
is.close();
return bimage;
} catch (Exception e) {
return null;
}
}
单位与位于该共同图像顶部的各种彩色标记不同。
在我只是将几个 commonImages 添加到 JPanel 之前,令牌是使用浮动在 commonImage 顶部的 JLabels 实现的
//at startup
ImageIcon commonImage = new ImageIcon(readBufferedImage("image.png"));
...
JPanel panel = new JPanel();
panel.add(commonImage);
panel.add(commonImage);
//located JLabels with token on the top of each commonImage
但是,现在我想使用 JScrollPane 而不是 JPanel,所以我认为在将每个 commonImage 显示给用户之前,对每个 commonImage 使用 drawString() 和 drawImage() 是一种更好的方法。
我估计大约有 20 个单元。因此,现在每个单元的每一轮我都需要使用各种令牌配置即时生成单独的 BufferedImage。
问题是我是否应该根据令牌配置缓存已经生成的 BufferedImages 以从缓存中提取,如果之前已经使用相同的配置生成了图像?