2017-01-16 2 views
-1

사용자가 그릴 직사각형 수와 직사각형이 그려지는 좌표를 입력하는 프로그램을 만들었습니다. 내 사각형은 현재 다음과 같이 그려져 있습니다 :주어진 좌표 중심에서 직사각형 그리기

link http://image.prntscr.com/image/0e4d267fae7240138e8f0018dbcbb044.png

나는이 달성하고자하는 :

int povecaj_kvadrat=0; 

    for(int x=0;x<broj_kvadrata;x++) { 
     Rectangle2D.Float kvadrat=new Rectangle2D.Float(brojevi_koordinate[0],brojevi_koordinate[1],50+povecaj_kvadrat,50+povecaj_kvadrat); 
     ploca.draw((kvadrat)); 
     povecaj_kvadrat=povecaj_kvadrat+15; 
    } 

     } 
:

link http://image.prntscr.com/image/dfd134efe9b34dd7ac0a2795531cf763.png

이 내가 사각형을 그리는 데 사용하는 코드입니다

두 번째 이미지에서와 같이 그려지도록 사각형의 좌표를 어떻게 설정합니까?

+0

'Rectangle2D.Float'의 구성 방법을 살펴보십시오. 처음 두 매개 변수는 직사각형 중심이 아니고 왼쪽 위 점입니다. 그리고 루프에서이 지점은 고정되어 있으며 변경되지 않습니다. –

답변

0

Rectangle의 추가 크기와 각 직사각형의 올바른 좌표를 계산하기위한 루프 내의 위치를 ​​고려해야합니다.

추가 크기가 변수 (diffSize)로 이동되어 루프에서 해당 값을 사용할 수 있습니다.

증가량 (x)이 낮고 크기가 Rectangle 일 때 더 큰 좌표이므로 두 반복 사이의 좌표의 차이는이 diff 크기의 절반과 루프의 위치의 역수를 곱한 값입니다. ((diffSize/2) 가장 가까운 int 값으로 반올림되기 때문에) diffSize가 홀수 인 경우 내가 올바른 동작이 확실하지 오전

 int gap = 0; 
     int maxNumber = 3; 
     int diffSize = 20; 

     int[] coordinates = { 10, 10 }; 

     for (int x = 0; x <= maxNumber; x++) { 
      Rectangle2D.Float rectangle = new Rectangle2D.Float(
        coordinates[0] + ((diffSize/2) * (maxNumber - x)), 
        coordinates[1] + ((diffSize/2) * (maxNumber - x)), 
        50 + gap, 50 + gap); 
      g2d.draw((rectangle)); 
      gap = gap + diffSize; 
     } 

주, 그래서 나는 diffSize에 대한 더 값을 유지하는 것입니다.