Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何缩小星象_Java_Graphics - Fatal编程技术网

Java 如何缩小星象

Java 如何缩小星象,java,graphics,Java,Graphics,我正在做一项任务,在400x400显示面板上生成2个星体(不是小行星)。通过一种叫做“drawAstroids”的方法,我能够制作出第一个,但是我在制作第二个时遇到了一些困难。而不是作出以下决定: 这就是正在发生的事情: 我原以为我可以用第二种方法更改缩放和大小设置,但我似乎无法使第二种方法看起来像第一种方法的更小版本。这是到目前为止我的代码。任何关于如何解决这个问题的提示都将不胜感激 import java.awt.*; public class GraphicsProject {

我正在做一项任务,在400x400显示面板上生成2个星体(不是小行星)。通过一种叫做“drawAstroids”的方法,我能够制作出第一个,但是我在制作第二个时遇到了一些困难。而不是作出以下决定: 这就是正在发生的事情:

我原以为我可以用第二种方法更改缩放和大小设置,但我似乎无法使第二种方法看起来像第一种方法的更小版本。这是到目前为止我的代码。任何关于如何解决这个问题的提示都将不胜感激

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

        }
    }
}
import java.awt.*;
公共类图形项目
{
//主要方法
公共静态void main(字符串[]args){
//初始化变量
//窗口大小为400 x 400像素
DrawingPanel=新的DrawingPanel(400400);
面板.立根背景(颜色.黑色);
Graphics g=panel.getGraphics();
g、 setColor(Color.GREEN);
图1(g,0,0400);
g、 setColor(Color.BLUE);
drawAstroid2(g,0,0200);
}
公共静态void drawstorid1(图形g,int x,int y,int size){
整数比例=大小/40;

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

您说得对。我已将硬编码的200改为大小/2,之后它工作正常。谢谢。