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