Java 仅在小程序上绘制一次字符串
Java中的新问题,可能会重复这个问题 使用不带标题栏的全屏小程序,借助绘画方法以10毫秒的时间间隔渲染图像。同时,我希望在小程序屏幕的任何位置显示特定的文本 由于图像是动态的,所以我以10毫秒的速度渲染,但文本是固定的,在applet的整个生命周期中不会改变 现在的问题是,若我用画法画文本,那个么画法的负担就是每10毫秒画一次图像和文本Java 仅在小程序上绘制一次字符串,java,image,applet,rendering,Java,Image,Applet,Rendering,Java中的新问题,可能会重复这个问题 使用不带标题栏的全屏小程序,借助绘画方法以10毫秒的时间间隔渲染图像。同时,我希望在小程序屏幕的任何位置显示特定的文本 由于图像是动态的,所以我以10毫秒的速度渲染,但文本是固定的,在applet的整个生命周期中不会改变 现在的问题是,若我用画法画文本,那个么画法的负担就是每10毫秒画一次图像和文本 public void paint(Graphics g) { if(img != null) { g.drawIm
public void paint(Graphics g)
{
if(img != null)
{
g.drawImage(img, 0, 0, null);
g.drawString("Hey there!", 0, 0); //Additional load
}
}
也不能在标题栏上放置文本
是否可以一次绘制文本并频繁渲染图像?如果只想绘制一次文本,我建议在绘制方法之外使用布尔变量:
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.
因此,考虑到这样做会删除先前绘制的文本,您的问题的答案是-否
顺便说一句-查找“过早优化” 但是你不需要把课文画出来吗?你可能需要写更多的东西,然后它会覆盖文本。要解决此问题,请再次绘制。