간단한 질문이 있습니다.Java Affine 변환
paint/paintComponent 컨텍스트 외부에서 아핀 변환을 수행 할 수 있습니까? 예를 들어, GeneralPath로 만들어진 Shape를 생성하고 45도 회전시키고 자한다고 가정 해 봅시다. 해당 개체를 만든 다음 개체를 만드는 대신 클래스 생성자에서 항상 회전 한 다음 paint/paintComponent 메서드에서 회전 할 수 있습니까?
대단히 감사합니다.
UPDATE는 정보들 주셔서 대단히 감사합니다. 오늘은 제안대로 간단한 테스트를 만들었습니다.
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.setColor(new Color(230, 230, 230));
g2.fill(enne.getNuvola());//enne.getNuvola(): code from an omitted class. returns a Shape of a cloud
g2.setColor(new Color(20, 20, 20));
/*
AffineTransform t = AffineTransform.getTranslateInstance(400,400);
g2.transform(t);
*/
g2.fill(rock.getRocket());
}//paintComponent
를이는 아핀 GeneralPath의의 클래스 생성자 내부 변환입니다
public class Rocket {
GeneralPath rocket;
public Rocket(){
rocket = new GeneralPath();
rocket.moveTo(10,10);
rocket.lineTo(15,15);
rocket.lineTo(15,50);
rocket.lineTo(5,50);
rocket.lineTo(5,15);
rocket.lineTo(10,10);
rocket.closePath();
AffineTransform t = AffineTransform.getTranslateInstance(400,400);
rocket.transform(t);
}//Rocket Costruttore
public GeneralPath getRocket(){
return this.rocket;
}
}//Rocket
하지만 지금은 다른 질문이 있습니다 :
이
가의 paintComponent 방법 내부 변환 아핀 함께 댓글을 달았습니다 :나는 paintCo를 위해 제안 된 것처럼 Rocket 클래스에서도 현재의 trasform의 현재 상태를 보호해야합니까? java transforming tutorial의 mponent 메소드?
- 현재 변환을 가져 오려면 getTransform 메소드를 사용하십시오.
- transform, translate, scale, shear 또는 rotate를 사용하여 변환을 연결합니다.
- 렌더링을 수행하십시오.
- setTransform 메소드를 사용하여 원래의 변환을 복원하십시오. 다시
, 답
예, 가능합니다. –
@AndrewThompson이 말하는 두 번째. 정말로 가능합니다. 시도 해보지 않으시겠습니까? –
특히 교육적인 운동입니다. 효과를 보려면'Shape'의'PathIterator'를 사용하십시오. – trashgod