如何缩小astroid

时间:2017-07-06 22:53:10

标签: java graphics

我正致力于在400x400显示面板上生成2个astroids(非小行星)。通过一个名为" drawAstroids"的方法,我能够制作第一个,但是我在制作第二个时遇到了一些麻烦。而不是做以下: 2 astroids 这就是发生的事情: 1 astroid and one yuck!

我认为我可以用第二种方法改变尺寸设置,但我似乎无法使第二种看起来像第一种方法的较小版本。到目前为止这是我的代码。有关如何解决此问题的任何提示将不胜感激。

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);

        }
    }
}

1 个答案:

答案 0 :(得分:0)

我认为您的问题源于200的硬编码值。您的图像尺寸不同,表示图像水平中心的x坐标随尺寸而变化。如果将200替换为考虑图像大小的中心x坐标的表达式,则应该得到更好的结果。您还应该问问自己为什么要将x和y值传递给两个方法,以及您正在使用它们做什么 - 特别是为什么x和y只添加到每一行的第一个坐标中。