2013-03-07 2 views
0

Я пытаюсь нарисовать объекты на холсте из массива, но дело в том, что я понятия не имею, как это сделать? Это должно включать положение и размеры фигур, и будет более одного типа формы. Код, который у меня до сих пор (это неэффективно/плохо, хотя)Рисовать массив на холст

public class MCanvas extends Canvas { 
    private Object[] world = {}; 

    public void paint(Graphics g){ 
     try{ 
      // How to paint all the shapes from world here? 
     } catch (NullPointerException e) { 
       System.out.println(e.toString()); 
     } 
     } 

} 

Любые идеи? Благодарю.

+1

* «но дело в том, что я понятия не имею, как?» * The Дело в том, что это не вопрос (даже с толканием «?» на конце). Каков ваш конкретный вопрос? Кроме того, зачем использовать AWT в этом тысячелетии? Здесь мы используем Swing. –

+0

Не забудьте сначала вызвать super.paint. Каковы формы? – MadProgrammer

+0

@MadProgrammer Они динамически добавляются в массив, но в основном прямоугольники и овалы. – YepNepDep

ответ

0

Если вы используете объекты, которые простираются от java.awt.Shape, вы можете перевести и сделать их с помощью Graphics2D контекста

С (некоторым WHe вокруг Java 1.3/4), краска двигатель гарантированно использовать Graphics2D экземпляр.

public void paint(Graphics g){ 
    super.paint(g); 
    Graphics2D g2d = (Graphics2D)g; 
    for (Object o : world) { 
     if (o instanceof Shape) { 
      Shape shape = (Shape)o; 
      //if the shape isn't created with 
      // a location, you can translate them 
      shape.translate(...,...); 
      g2d.setColor(....); 
      g2d.draw(shape); 
      //g2d.fill(...); 
     } 
    } 
} 

Вы хотели бы взглянуть на 2D Graphics для более подробной информации.

Кроме того, используйте JPanel вместо Canvas, а затем переопределить его метод paintComponent

Посмотрите Custom Painting для получения более подробной информации

+0

А, очень полезно. Спасибо за это, я посмотрю. – YepNepDep

Смежные вопросы