Рисование строки в апплете только один раз - PullRequest
1 голос
/ 14 октября 2019

Новое в Java и может быть повторен вопрос.

Использование полноэкранного апплета без строки заголовка для визуализации изображений с интервалом в 10 миллисекунд с помощью метода рисования. В то же время я хочу, чтобы конкретный текст отображался на экране апплета в любой позиции.

Поскольку изображения динамические, я рендерился на 10 миллисекундах, но текст исправлен и не будет меняться в течение всей жизни апплета.

Теперь проблема в том, что если я рисую текст в методе рисования, то его нагрузка на метод рисования заключается в том, чтобы рисовать изображение и текст каждые 10 миллисекунд.

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

Не удается также разместить текст в строке заголовка.

Можно ли рисовать текст сразу и часто отображать изображения?

Ответы [ 2 ]

1 голос
/ 14 октября 2019
public void paint(Graphics  g) 
{ 

Вместо этого должно быть:

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

Таким образом, если вы удалите ранее нарисованный текст, ответ на ваш вопрос - нет.

Кстати - посмотрите «преждевременная оптимизация».

0 голосов
/ 14 октября 2019

Если вы хотите нарисовать текст только один раз, то я бы порекомендовал иметь булеву переменную вне вашего метода рисования:

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

Проблема в том, что если у вас есть движущиеся пиксели или объекты(изменить положение каждого кадра) или просто все, что должно исчезнуть, вам придется написать намного больше, чтобы стереть его. Это просто более читабельно, чтобы накладывать команды рисования друг на друга, и его можно легко редактировать и создавать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...