仅在小程序上绘制一次字符串
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'。
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'。