首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java如何创建垂直健康栏?

Java如何创建垂直健康栏?
EN

Stack Overflow用户
提问于 2021-10-18 21:21:03
回答 2查看 174关注 0票数 0

我需要一些帮助修复我的垂直健康杆。它正确地跟踪和更新健康状况,但是由于Java如何绘制(从左上角,即(0,0)),该条看起来是颠倒的。我想翻转健康栏,使它看起来正确,但我不知道如何这样做。

代码x和y中的除法就是将条子放在画布上正确的位置。乘数是扩大健康栏,以适应我为它做的图形叠加。

代码语言:javascript
运行
复制
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);
        
}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-18 21:33:45

您需要根据剩余的健康量来移动栏,如下所示:

代码语言:javascript
运行
复制
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);
}
票数 1
EN

Stack Overflow用户

发布于 2021-10-18 21:33:05

按照需要设置坐标系统,使用transform()和transform()。所以:

您希望原点位于(0,高度);左下角。然后要翻转Y轴。示例代码:

代码语言:javascript
运行
复制
AffineTransform tform = AffineTransform.getTranslateInstance( 0, height);
tform.scale( 1, -1);
g2.setTransform( tform);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69622691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档