paintComponent
을 재정 의하여 JPanel에 일부 모양을 그립니다. 팬하고 확대/축소 할 수 있어야합니다. 패닝 및 확대/축소는 개체의 AffineTransform
및 setTransform
메서드로 수행하기 쉽습니다. 그렇게하면 모양을 그릴 수 있습니다. g2.draw(myShape)
모양이 "세계 좌표"로 정의되므로 패닝 할 때 잘 작동하므로 그리기 전에 캔버스/JPanel 좌표로 변환해야합니다.좌표에 다른 사분면을 사용하여 JPanel에서 그릴 방법은 무엇입니까?
이제 좌표를 quadrant으로 변경하고 싶습니다. JPanel과 컴퓨터가 자주 사용하는 4 사분면부터 사용자가 가장 익숙한 1 사분면까지. X는 같지만 Y 축은 아래쪽이 아닌 위쪽으로 증가해야합니다. new Point(origo.x, -origo.y);
그러나이 사분면의 모양을 어떻게 그릴 수 있습니까? 나는 캔버스 좌표로 가지지 않고 모양 (세계 좌표로 정의)의 좌표를 유지하고 싶습니다. 그래서 나는 어떤 식 으로든 그것들을 변형 시키거나, Graphics2D
객체를 변형 할 필요가 있습니다. 을 효율적으로하고 싶습니다. AffineTransform
으로도이 작업을 수행 할 수 있습니까? 도면에 대한
내 코드 :
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.setColor(Color.blue);
AffineTransform at = g2.getTransform();
at.translate(-origo.x, -origo.y);
at.translate(0, getHeight());
at.scale(1, -1);
g2.setTransform(at);
g2.drawLine(30, 30, 140, 20);
g2.draw(new CubicCurve2D.Double(30, 65, 23, 45, 23, 34, 67, 58));
}