2014-02-11 1 views
2

JPanel 내부에 셰이프를 만들려고하는데 JPanel이 증가하거나 감소 할 때 셰이프의 크기도 그에 따라 변경됩니다.창 크기에 따라 개체의 비율을 조정하는 방법은 무엇입니까?

protected void paintComponent(Graphics g) 
    { 
     super.paintComponent(g); 
     g.drawLine(0,100,50,0); 
    } 

내 문제는 내가 this.getHeight() 또는 this.getLength()의 라인을 따라 뭔가를 사용하여 크기를 조절하는 방법을 모른다는 것이다.

답변

2

당신이 구성 요소 크기 변경 등의 비례 비율을 유지하고 싶은 말은 가정 ...

이 할 수있는 몇 가지 방법이 ...있다

당신은 "기본"을 결정하여 시작할 수

값, 즉 "기본"너비가 200 인 경우 줄 시작점은 너비의 50 %이고 끝점은 너비의 25 %가됩니다. 이것은 당신이 그런 짓을 할 수 있도록 할

... @MadProgrammer에 의해 설명 된 경로 게다가

int width = getWidth(); 
int x1 = (int)(Math.round(width * 0.5d); 
int x2 = (int)(Math.round(width * 0.25d); 
g.drawLine(0, x1, x2, 0); 
3

, 나는 그래픽을 확장하는 생각할 수있는 두 가지 방법이 있습니다.

스윙 구성 요소는 일반적으로 Graphics 개체가 실제로 Graphics2D 개체에 의존 할 수 있습니다.

  1. 그러면 Graphics2D.scale(sx,sy)을 사용할 수 있습니다. 필요
  2. 방법 중 하나를 사용하여 AffineTransform (. getScaleInstance(sx,sy)를 사용하여 드로잉 전에 Graphics2D로 설정 얻어진.

의 규모 인스턴스는 원래 좌표 스케일링한다.