【发布时间】:2015-08-14 10:40:35
【问题描述】:
我决定用上图制作一个HUD,但我不知道我需要使用Java中的什么命令,以便我可以分别填充上半部分和下半部分。
我只知道如何使用g.fillRect(); 命令,大约需要20 个这样的命令才能填满所说的一半。
public class HUD {
private Player player;
private BufferedImage image;
private Font font;
private Font font2;
private int Phealth = Player.getHealth();
public HUD(Player p) {
player = p;
try {
image = ImageIO.read(getClass().getResourceAsStream("/HUD/HUD_TEST.gif"));
font = new Font("Arial", Font.PLAIN, 10);
font2 = new Font("SANS_SERIF", Font.BOLD, 10);
}
catch(Exception e) {
e.printStackTrace();
}
}
public void draw(Graphics2D g) {
g.drawImage(image, 0, 10, null);
g.setFont(font2);
g.setColor(Color.black);
g.drawString("Health:", 30, 22);
g.drawString("Mana:", 25, 47);
g.setFont(font);
g.drawString(Player.getHealth() + "/" + player.getMaxHealth(), 64, 22);
g.drawString(player.getCubes() / 100 + "/" + player.getMaxCubes() / 100, 55, 47);
g.setColor(Color.red);
g.fillRect(1, 25, Phealth * 25, 4);
g.setColor(Color.blue);
g.fillRect(1, 31, player.getCubes() / 33, 4);
}
}
这是目前为止 HUD 的代码。
填充形状的任何帮助都会有所帮助。
【问题讨论】:
-
您是否可以将图像中的“您希望填充的区域”设为透明?那你可以先画条,再在上面画图?我不确定 Graphics2D 是否可以处理具有透明度的图像。
-
我不确定它是否会起作用,或者 Graphics2D 是否能够处理它,但主要问题是滞后。如果我添加 20 个矩形来填充它。帧速率被破坏,因为它必须更新所有矩形,所以我希望有一种简单的方法可以在一个命令中填充它。
-
我已经添加了一个答案来说明我的想法,看看你是否能理解? :)