2017-07-06 58 views
0

我正在進行一項任務,以在400x400顯示面板上生成2個astroids(非小行星)。通過一種叫做「drawAstroids」的方法,我能夠做出第一個,但是我在製作第二個方面遇到了一些麻煩。而不是讓操作: 2 astroids 這是發生了什麼: 1 astroid and one yuck!如何縮小astroid

我想我可能只是改變規模與第二種方法的大小設置,但我似乎無法使第二一個看起來像一個第一個較小的版本。這是我的代碼到目前爲止。任何提示如何解決這個問題將不勝感激。

import java.awt.*; 

public class GraphicsProject 
{ 

    //main method 
    public static void main (String[]args){ 
    //Initialize the variable 
    //The Window is 400 x 400 pixels in size 
    DrawingPanel panel = new DrawingPanel (400,400); 
    panel.setBackground(Color.BLACK); 
    Graphics g = panel.getGraphics(); 
    g.setColor(Color.GREEN); 
    drawAstroid1(g,0,0,400); 
    g.setColor(Color.BLUE); 
    drawAstroid2(g,0,0,200); 
    } 

    public static void drawAstroid1(Graphics g, int x, int y, int size){ 
     int scale = size/40; 

     for (int i = 0; i <= 20; i++){ 
      g.drawLine(x + size/2, y + scale * i, size/2 + scale * i, size/2); 
      g.drawLine(x + size/2, y + scale * i, 200 - scale * i, size/2); 
      g.drawLine(x + size/2, size - scale * i, 200 - scale * i, size/2); 
      g.drawLine(x + size/2, size - scale * i, size/2 + scale * i, size/2); 

     } 
    } 
    public static void drawAstroid2(Graphics g, int x, int y, int size){ 
     int scale = size/40; 

     for (int i = 0; i <= 20; i++){ 
      g.drawLine(x + size/2, y + scale * i, size/2 + scale * i, size/2); 
      g.drawLine(x + size/2, y + scale * i, 200 - scale * i, size/2); 
      g.drawLine(x + size/2, size - scale * i, 200 - scale * i, size/2); 
      g.drawLine(x + size/2, size - scale * i, size/2 + scale * i, size/2); 

     } 
    } 
} 

回答

0

我想從200的硬編碼值,你的問題源於你的圖像的大小不同,X座標表示的同尺寸的圖像變化的水平中心。如果用表達式替換200,考慮到圖像的大小,給出中心x座標,則應該得到更好的結果。你還應該問自己爲什麼你將x和y值傳遞給你的兩種方法,以及你在做什麼 - 特別是爲什麼x和y只加到每行的第一個座標中。

+0

你說得對。我已經將硬編碼的200更改爲size/2,並在之後正常工作。謝謝。 – Gerald