2011-09-26 6 views
2

GUI를 만들기 위해 Java Swing을 사용하고 있습니다.이미지를 프레임 크기를 따라 만듭니다.

이미지에 인쇄 된 정보 (실행시에 BufferedImage 개체로 생성 됨)를 사용자에게 제시해야합니다. 내가 뭐하는 거지

: 내 JFrameJPanel을 넣고, 시스템이 내가 g에 이미지를 그리는 paint(Graphics g) 메소드를 호출 할 때 ->(g.drawImage(buffImg,0,0,null))합니다.

내가 좋아하지 않는 것은 다음과 같습니다. 프레임의 크기를 조정하면 이미지가 그대로 유지되며 필드 만 확장됩니다. 대신 프레임의 크기를 조정할 때 이미지를 "늘려"만들고 싶습니다.

효율적인 방법이 있습니까? (나는 새로운 크기 조정 된 이미지, 프레임의 크기, 그래픽을 새로 고칠 때마다 만들 수 있다고 생각했지만 초당 여러 번 이미지를 업데이트하므로 실제 작업은 무거울 것입니다.)

+0

1) 속성 사용에 CamelCase. 2)'JPanel'에서 커스텀 페인팅을하려면'JFrame'에서 커스텀 페인팅을 위해'paintComponent()'를 오버라이드하십시오. 그냥하지 마세요. 'JComponent' 또는'JPanel'을 사용하십시오 3) * "정말 무거운 작업이 될 것입니다"* 프로파일 링은 추측을 이깁니다. –

+0

1) 오른쪽 : D 2) 그게 내가하는 일이야, 나는 단지 jpanel을 그린다. 그러나 내가 그것을 업데이트 할 때 gui가 이미지를 리프레시하지 않을 것이기 때문에 나는 다음과 같이 강제로 업데이트한다 :'g = panel.getGraphics() ; panel.paint (g);'... 우아하지는 않지만 잘 작동합니다 : D – Pronte

답변

5

변경 :

g.drawImage(BuffImg,0,0,null): 

사람 :

g.drawImage(BuffImg,0,0,getWidth(),getHeight(),this): 
+1

정말 쉽지 않다고 믿을 수는 없습니다 .. 물론 Graphics 클래스의 javadoc을 읽었지만 오해했습니다. 생각 "지정된 사각형 내부에 맞게 이미 지정된 크기만큼의 지정된 이미지를 그립니다." "이미지의 일부만 그립니다"라는 의미였습니다. 감사합니다. – Pronte

+1

걱정할 필요가 없습니다. 다행히 Java Docs를 확인해 봤습니다. (그들은 훌륭한 자료입니다. 그러나 내가 읽은 내용을 오해했습니다.) :-) –

관련 문제