我需要一些帮助修复我的垂直健康杆。它正确地跟踪和更新健康状况,但是由于Java如何绘制(从左上角,即(0,0)),该条看起来是颠倒的。我想翻转健康栏,使它看起来正确,但我不知道如何这样做。
代码x和y中的除法就是将条子放在画布上正确的位置。乘数是扩大健康栏,以适应我为它做的图形叠加。
private void drawHealthBar(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.red);
g2.fillRect(WIDTH - (WIDTH / 50), HEIGHT / 2, 10, ships.get(0).getHealth() * 6);
}
发布于 2021-10-18 21:33:45
您需要根据剩余的健康量来移动栏,如下所示:
private void drawHealthBar(Graphics g) {
final Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.red);
final int w = 10;
final int h = ships.get(0).getHealth() * 6; // calculate height first
final int x = WIDTH - (WIDTH / 50);
final int y = HEIGHT / 2 + (MAX_HEIGHT - h); // shift by height of whitespace
g2.fillRect(x, y, w, h);
}
发布于 2021-10-18 21:33:05
按照需要设置坐标系统,使用transform()和transform()。所以:
您希望原点位于(0,高度);左下角。然后要翻转Y轴。示例代码:
AffineTransform tform = AffineTransform.getTranslateInstance( 0, height);
tform.scale( 1, -1);
g2.setTransform( tform);
https://stackoverflow.com/questions/69622691
复制相似问题