仅在小程序上绘制一次字符串

Drawing string on applet only once

Java 中的新问题,可能会重复问题。

使用没有标题栏的全屏小程序借助 paint 方法以每 10 毫秒的时间间隔渲染图像。同时我希望在小程序屏幕的任意位置显示特定的文本。

由于图像是动态的,因此我在 10 毫秒内进行渲染,但文本是固定的,不会在小程序的整个生命周期内发生变化。

现在担心的是,如果我在 paint 方法中绘制文本,那么每 10 毫秒绘制图像和文本的 paint 方法的负担就会增加。

public void paint(Graphics  g) 
{   
    if(img != null)
    {
        g.drawImage(img, 0, 0, null);   
        g.drawString("Hey there!", 0, 0); //Additional load
    }           
}   

也不能在标题栏上放置文本。

是否可以一次性绘制文字,频繁渲染图片?

如果您只想绘制一次文本,那么我建议您在 paint 方法之外使用一个布尔变量:

boolean drawn = true;
public void paint(Graphics g){
    if(drawn) g.drawString(...);
}

问题在于,如果您有任何移动的像素或物体(每帧改变位置)或任何应该消失的东西,您将不得不写更多的东西来擦除它。将绘画命令层层叠叠起来更易读,并且可以更轻松地编辑和创建。

public void paint(Graphics  g) 
{ 

应该改为:

public void paint(Graphics  g) 
{ 
     super.paint(g); // paint the background, borders etc.

鉴于这样做会擦除之前绘制的文本,您的问题的答案是 - 不会。

顺便说一句 - 查找 'premature optimization'。