当前位置: 首页 > 知识库问答 >
问题:

Graphics2D重置屏幕?

郤瀚
2023-03-14

我有一个游戏教程,我遵循,画字符串在屏幕上使用图形2D。它像明星一样工作,但唯一的问题是我不明白为什么。

    public void draw(Graphics2D graphics) {

    bg.draw(graphics);

    graphics.setColor(titleColor);
    graphics.setFont(titleFont);
    graphics.drawString("Peache's Revenge", 50, 70);

    graphics.setFont(font);
    for (int i = 0; i < options.length; i++) {
        if (i == currentChoice) {
            graphics.setColor(Color.RED);
        } else {
            graphics.setColor(Color.BLACK);
        }
        graphics.drawString(options[i], 145, 140 + i * 15);
    }

}

共有1个答案

倪棋
2023-03-14

假设图形上下文不变(即每个调用都相同),那么,除非清除背景,否则内容将继续在其上绘制。

从您的注释中,bg.draw正在绘制背景,在以前绘制的任何内容的顶部,这意味着以前绘制的任何内容现在都将被背景覆盖,因此需要重新生成文本。

 类似资料:
  • 介绍 (Introduction) Graphics2D类扩展了Graphics类,以提供对几何,坐标转换,颜色管理和文本布局的更复杂控制。 类声明 以下是java.awt.Graphics2D类的声明: public abstract class Graphics2D extends Graphics 类构造函数 SN 构造函数和描述 1 Graphics2D() 构造一个新的Graph

  • 我有一个大小的图像(宽度=1444*高度=760)。现在我想在imageview中显示它,以设置imageview的重量和高度,我为dimens.xml创建不同的文件,如: dimens.xml dimens.xml(hdpi) dimens.xml(mdpi) dimens.xml(xhdpi) dimens.xml(xxhdpi) dimens.xml(xxxhdpi) dimens.xml(

  • 我遇到了两个不同的问题一个是一般的Graphics2D,另一个是具体的repaint()方法。 首先是repaint()问题。我有一个基于用户选择的时间间隔更新的图表,时间间隔可以从1秒到几分钟不等。问题是一旦调用了repaint()方法,它就会在代码的每一次迭代中不断地回忆自己,而不仅仅是在我想要的时候。有人知道为什么会这样吗?如何阻止它?我试着把我的代码放在一个带有标志的if语句中,但是一旦标

  • 我有以下最小的代码来用箭头头画一条线: 它是这样创建的: 线画得很好,但箭头头是不可见的,直到我调用repaint()。问题是,该元素是一个可拖动的元素,因此每次更改位置时,我都必须调用repaint()两次。这会使代码更加复杂,并且GUI会很落后。 为什么箭头不能直接和线画在一起呢?真的没有人能帮我吗?

  • 问题内容: 用户单击“主页”时,可以选择启动器,还可以选择是否将其设置为默认值。问题在于,之后很难再次更改它。 为了解决这个问题,我添加了一个“重置首选启动器”来触发: 但是,此行仅在首选启动器选择了我的启动器后重置。我需要一个片段来清除首选的启动程序,因此,下次用户单击主页时,将再次获得选项。 问题答案: 这不是直接可能的,Android开发人员已声明他们不希望任何应用程序更改用户的偏好。但是,

  • 问题内容: 我到处搜索,但找不到答案。 如何在Java中旋转矩形? 这是我的一些代码: 我尝试了g2d.rotate(100D); 但它没有用。提前致谢。 这是我编辑的代码: 问题答案: 对于图像,必须将Graphics2D的drawImage方法与相对的AffineTransform一起使用。 对于形状,您可以旋转Graphics2D本身: 顺便说一句,您应该重写paintComponent方法