2012-08-03 3 views
1

현재 프로그램에 BufferedImage로로드하는 이미지가 있습니다. 이 BufferedImage는, 고정 사이즈의 JPanel 클래스 내에 배치됩니다.Java에서 BufferedImage를 사용하여 큰 이미지 크기보기

이제 내가 직면 한 문제는이 고정 된 크기의 JPanel 내부에서이 큰 BufferedImage를 어떻게 패닝 할 수 있는지입니다.

JPanel 크기가 이미지보다 확실히 작습니다.

감사합니다.

답변

3

먼저 이미지가 너무 크거나 높을 때만 표시되는 일부 스크롤 막대를을 사용하여 JPanel (남동쪽 및 동쪽)에 연결합니다. 남은 공간 (가운데)에 또 다른 JPanel을 붙이십시오. 그 내부의 JPanel에서 paintComponent 메서드를 무시하고 BufferedImage 부분을 JPanel에 그립니다. 스크롤 막대의 오프셋을 사용하여 이미지를 오프셋하고 너비와 높이 (뷰포트)를 내부 인 JPanel으로 지정합니다.

참고 : 스크롤 막대는 값이 변경 될 때마다 내 JPanelrepaint 메서드를 호출합니다.

paintComponent은 이미지를 다시 그려야 할 때마다 자동으로 (또는 수동으로) 시스템에서 호출됩니다. 이렇게하면 이미지를 제공하는보기를 사용자 정의 할 수 있습니다 (그러한 기능이 필요한 경우).

JPanel에 일부를 첨부하고 마우스 이동에 따라 스크롤 막대의 오프셋을 수정할 수도 있습니다 귀하의 구성 요소와 마우스 상호 작용을 위해. 그냥 생각.

+0

이미지를 호스팅하는 패널의 기본 크기 (최소 가능 크기)를 이미지의 동일한 크기로 설정할 수도 있습니다. – MadProgrammer

+0

예를 들어 http://docs.oracle.com/javase/tutorial/uiswing/components/scrollpane.html을 확인하십시오. 'x','y','width','height' 만 있으면됩니다. 이 값들은'paintComponent' 메쏘드가 호출 될 때 항상 사용 가능하며 그릴 이미지의 보이는 부분을 정의합니다. –

+0

그러나 부모 컨테이너를 기반으로 이미지의 크기를 조정하려는 경우가 아니면 이미지 크기에 따라 패널의 크기를 layou 관리자에게 제안 할 수 있습니다. 너비와 높이 만 요구하면 x, y는 뷰포트에 의해 처리되어야 함 – MadProgrammer

관련 문제