2012-10-09 3 views
4

Netbeans에서 스윙 GUI를 만들고 있습니다. 이 GUI의 목적은 JLabel 아이콘으로 버퍼링 된 이미지를 열고 Affine 변환을 적용하는 것입니다. 이제 다음과 같이 4 가지 변형이 있습니다. 각 변환 자 JSlider의 최소값과 최대 값을 조건 변경시 변경합니다.

enter image description here

는 하나만 필요로되는 회전의 것을 제외하고는, X 및 Y 값을 변경하기 위해 두 개의 슬라이더를 필요로한다. 4 가지 유형의 변형에 대해 4 개의 탭을 수행하는 것보다 훨씬 나은 방법으로이 방법을 사용했습니다. 또한 예를 들어 이미지가 회전 된 경우 드롭 다운 목록에서 전단을 선택하여 동일한 회전 이미지를 절단 할 수 있기를 바랍니다.

문제는 : 레이블 아이콘을 다시 페인트하고 동일한 다시 그어진 이미지에 다른 변형을 적용하려면 어떻게합니까? 또한 JSlider의 최소값과 최대 값을 어떻게 변경합니까?

답변

7

원래로드 된 BufferedImage를 저장하고 사본을 만들어야합니다. 이렇게하면 "파괴"하지 않습니다.

값을 변경하는 방법은 setMaximum 및 setMinimum입니다. 목록에 수신기를 추가하고 Oracle tutorial에 명시된대로 값을 수정하십시오.

+0

bufferedImage를 글로벌로 만드는 것이 좋습니다. – md1hunox

+0

예, 어딘가에 저장해야합니다.) –

+1

원본 버퍼와 "결과"이미지를 생성하기 위해 생성 할 수있는 효과 목록이있는 모델을 정의 할 수 있습니다. 이것은 효과의 순서를 변경하고보기가 반응하는 방법을 결정하도록 허용 할 것입니다 ... IMHO – MadProgrammer

4

@ Daniel의 대답의 구체적인 예로, Image processing with Java 2D 문서는 ImageDicer 프로그램을 설명합니다. 그것은 각각 JComboBox에서 선택되고 BufferedImage에 적용될 수있는 TreeMap<String, BufferedImageOp>을 구성합니다.

관련 예제 herehere도 참조하십시오.