Скрыть / Удалить DrawImage - PullRequest
       17

Скрыть / Удалить DrawImage

0 голосов
/ 05 августа 2011

Я пишу программу, которая показывает изображение, движущееся по экрану, однако для назначения я должен использовать метод drawImage. Я создаю новое Изображение с именем Черепаха, а затем рисую Изображение в одной точке, а затем рисую его снова в более поздней точке, однако первое нарисованное Изображение все еще видно, как я могу скрыть / заставить его исчезнуть. Я новичок в Java, поэтому, пожалуйста, объясните это как можно проще.

Спасибо!

Вот пример моего кода:

import java.awt.*;
import java.applet.*;

public class Race extends Applet {

         Image tortoise;

   public void init() {
           setSize(1275,1000);
           tortoise = getImage( getDocumentBase(), "resources/tortoise.png" );



   }

   public void paint( Graphics g) {

           g.drawImage(turtle, 100, 100, this);
           g.drawImage(turtle, 200, 200, this); // Both images are shown.               

     }
  }

Ответы [ 2 ]

2 голосов
/ 05 августа 2011

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

g.drawImage(turtle, 100, 100, this);
try {
    Thread.sleep(5000);
} catch(InterruptedException e) {}

g.clearRect(100, 100, turtle.getWidth(null), turtle.getHeight(null));
g.drawImage(turtle, 200, 200, this);

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

0 голосов
/ 05 августа 2011

Подумайте, что вы делаете.У вас открыт холст, а затем вы что-то рисуете на нем.И тогда вы рисуете что-то еще на этом.И они оба появляются.

Теперь подумайте о видеоигре, скажем, Super Mario Brothers, когда на экране есть две Koopas (черепахи).Ничья (koopa) вызывается дважды ... как в вашем коде.

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

После этого ... попробуйтевместо этого перемещая черепаху с помощью цикла for и используя метод drawImage только один раз (в цикле).

...