2017-09-29 6 views
0

내 그림의 각 라인이 이전 라인의 그림에 의존하는 프로그램을 작성 중입니다. 새로운 도장은 지정된 좌표에서 이전 라인의 RGB 값을 필요로하기 때문에 JPanel을 BufferedImage로 변환 한 다음 getRGB()를 사용하여 색상을 가져옵니다.기존 이미지에 그리기

새 이미지를 만들 때 초기 이미지를 가져 오는 문제가 있습니다.

다음의 코드 라인은 인스턴스 변수

@Override 
    public void paintComponent(Graphics g) 
    { 
     super.paintComponent(g); 
     if(line==1) 
     { 
      g.setColor(Color.WHITE); 
      g.fillRect(0,0,100,100); 
      g.setColor(Color.RED); 
      g.fillRect(25,25,20,20); 
     } 
     else if(line!=1) 
     { 
      g=img.getGraphics(); 
      g.setColor(Color.BLUE); 
      g.fillRect(50,50,25,25); 
     } 
    } 

을 워크 않으며 IMG는 선으로 제 라인 -

Paint_Test ob=new Paint_Test(); 
frame.add(ob); 
img=toBufferedImage(ob); 

의 BufferedImage의 인

g=img.getGraphics(); 

원래의 bufferedimage의 그래픽 객체를 가져 와서 그 위에 그려 넣으려고합니다. 대신 출력물에 빈 화면이 표시됩니다 (이상적인 출력은 두 개의 사각형, 빨간색과 파란색 중 하나입니다).

제가 잘못 가고있는 부분과 어떻게 해결할 수 있는지 알려주세요. 당신의 도움이 크게 감사 할 것입니다.

감사합니다.

+1

적절한 [mcve]를 게시하는 것이 도움이되도록 'else if (line! = 1)'줄을'else '로 다시 쓸 수 있습니다. – Frakcool

답변

0

가 증가 그림에 대한 일반적인 두 가지 방법은 다음과 같습니다 BufferedImage의에

  1. 페인트하고 페인트 객체의 ArrayList를 유지 이미지
  2. 을 그립니다. 그런 다음 ArrayList를 반복하고 모든 객체를 페인트합니다.

각 방법에 대한 자세한 내용과 작업 예제는 Custom Painting Approaches을 확인하십시오.

0

Camickr의 답변은 주제를 자세히 살펴보고 싶다면 좋습니다. 당신이 빠른 수정을 찾고 있다면 그래픽이 내가 단지 화상 -

g.drawImage(img,0,0,null); 

이 원하는 결과를 생성을 그려해야 이미지에 반대 할당 더 further-

대신 이동합니다.