2011-11-01 3 views
1

다음과 같은 문제가 있습니다. BufferedImage에 선을 그 으려하지만, 표시되지 않습니다. 이미지를로드하지 않으면 이미지가 표시됩니다. 문제가 무엇입니까? 내 코드는 다음과 같습니다.drawLine이 BufferedImage에 선을 그리지 않습니다.

@Override 
    public void paintComponent(Graphics g) { 
     prepareImage(); 
     g.drawImage(buffer, 0, 0, null); 
     g.dispose(); 
    } 
    private void prepareImage() { 
     Graphics g = buffer.createGraphics(); 
     g.drawImage(mapImage, 0, 0, null); 
     g.setColor(Color.RED); 
     for (Line line : lines) 
      g.drawLine(line.x1, line.y1, line.x2, line.y2); 
     lines.clear(); 
     g.dispose(); 
    } 

감사합니다.

+0

더 나은 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. 이미지를 사용하는 SSCCE의 경우 이미지에 핫 링크하거나 코드로 생성하십시오. –

+0

또한, "버퍼 이미지"를 "라인 이미지"위에 그린 것처럼 보입니다. – camickr

답변

5

나는 코드에서 두 가지 문제를 참조하십시오 당신이 라인 모음을 취소 때문에 당신은 paintComponent에

  • 에 g.dispose()를 호출하지 않아야

    1. , 다음 시간의 paintComponent가 호출을 (당신 그걸 통제 할 수는 없다.), 선은 그려지지 않을 것이다.
  • +0

    g.dispose()를 사용해야합니다. createGraphics() 메서드에서 반환 된 Graphics 객체를 삭제합니다. paintComponent() 메서드에 전달 된 Grpahics 객체를 삭제하지 않습니다. – camickr

    +0

    당신은 prepareImage에 대해 이야기하고 있습니다. 반면에 나는 paintComponent에있는 것을 이야기하고 있습니다. –

    +2

    미안하지만, 그 점에 관해서는 분명히 분명합니다. 내가 무엇을 생각하고 있었는지 확실하지 않습니다. – camickr