난 I는 Jpanel2 정의하고이를 다각형을 그리 다음 GUI를 만들 넷빈즈에게 IDE를 사용하는 코드를 인JPanel 문제에 대한 JavaSwing 조정?
INT [] polygonXs = {151, 153, 158, 159, 154};
int [] polygonYs = {6, 1, 3, 8, 10};
도형 모양 = 새 다각형 (polygonXs, polygonYs, polygonXs.length);
그런 다음 문제는 점 (151,1) (153,1) (158,3) (159,8) (154,10)이 JFrame 좌표에 있다는 것입니다.
추가로 (0,0)은 JFrame의 왼쪽 상단에 있지만, (0,0)은 Jpanel2 (검정색 배경)의 왼쪽 상단에 있어야합니다. 어떻게 (이미지 아래의 Jpanel2 코드) 그것을 고칠 수 있습니다.
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import javax.swing.JPanel;
public class J2d1 extends JPanel{
public static final String TITLE = "Affine Transform Demo";
int[] polygonXs = { 151, 153, 158, 159, 154};
int[] polygonYs = { 6, 1, 3, 8, 10};
Shape shape = new Polygon(polygonXs, polygonYs, polygonXs.length);
double x = 50.0, y = 50.0;
public void paintComponent(Graphics g){
super.paintComponent(g);
setBackground(Color.BLACK);
Graphics2D g2d = (Graphics2D)g;
AffineTransform saveTransform = g2d.getTransform();
AffineTransform identity = new AffineTransform();
g2d.setTransform(identity);
g2d.setColor(Color.green);
g2d.fill(shape);
g2d.translate(x, y);
g2d.scale(2.2, 2.2);
g2d.fill(shape);
for(int i = 0; i < 5; ++i){
g2d.translate(50.0, 5.0);
g2d.setColor(Color.blue);
g2d.fill(shape);
g2d.rotate(Math.toRadians(15.0));
g2d.setColor(Color.RED);
g2d.fill(shape);
}
g2d.setTransform(saveTransform);
}
}
1) 더 나은 도움을 받으려면 [MCVE] (http://stackoverflow.com/help/mcve) (최소한의 완전한 검증 가능한 예) 또는 [SSCCE] (http://www.sscce.org/) (짧은, 자체 포함, 올바른 예). 2) 'AffineTransform'인스턴스의 조합을 사용하여 좌표계를 변경하십시오. –
BTW - 이미 AffineTransform 인스턴스를 실험 해본 것처럼 보입니다. 그러나 위의 코드는 그렇지 않은 경우와 똑같은 효과를냅니다. –
사이드 노트 (@AndrewThompson도 가능) : 하나는 ** 절대로 ** id2 변환 .setTransform (...)을 수동으로 생성 된 affine 변환으로 호출하십시오. 자세한 내용은이 메소드의 JavaDoc을 참조하십시오. http://docs.oracle.com/javase/8/docs/api/java/awt/Graphics2D.html#setTransform-java.awt.geom.AffineTransform- – Marco13