2013-03-07 1 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

* 자세한 내용은 Custom Painting에서 살펴보고 그 paintComponent 방법 오버라이드 (override) 다음 JPanel 대신 Canvas의를 사용하여 "방법하지만 일이, 내가 단서가 없다?"* 문제가되지 않습니다. (결국 '?'를 눌러서). 당신의 구체적인 질문은 무엇입니까? 또한이 천년기에 AWT를 사용해야하는 이유는 무엇입니까? 여기서 우리는 스윙을 사용합니다. –

+0

super.paint를 먼저 호출하는 것을 잊지 마십시오. 모양은 무엇입니까? – MadProgrammer

+0

@MadProgrammer 배열에 동적으로 추가되지만 주로 사각형과 타원입니다. – YepNepDep

답변

0

당신의 java.awt.Shape에서 확장 개체를 사용하는 경우, 당신은 번역 (/ 4 자바 1.3의 주위에 어떤 갔지) 있기 때문에 Graphics2D 상황

를 사용하여 그들을 그릴 수는 페인트 엔진은 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을 참조하십시오.

또한

,

+0

아, 매우 도움이됩니다. 고마워, 내가 조사해. – YepNepDep