我想用java制作一个木棍图形

我想用java制作一个木棍图形,java,Java,我有头,一只胳膊和身体。我试着用同样的前两个坐标做另一只手臂,从头部底部开始,但最后两个坐标是负数(但数字相同)。我假设如果我做了一个否定的版本,它会做一个相反的版本。相反,它只是竖起!我不明白为什么会这样 import javax.swing.JComponent; import java.awt.*; import java.awt.geom.*; public class StickFigure extends JComponent { public void paintComponen

我有头,一只胳膊和身体。我试着用同样的前两个坐标做另一只手臂,从头部底部开始,但最后两个坐标是负数(但数字相同)。我假设如果我做了一个否定的版本,它会做一个相反的版本。相反,它只是竖起!我不明白为什么会这样

import javax.swing.JComponent;
import java.awt.*;
import java.awt.geom.*;

public class StickFigure extends JComponent
{
public void paintComponent(Graphics g)
 {
    Graphics2D g2 = (Graphics2D) g;

    Ellipse2D.Double head = new Ellipse2D.Double(5, 10, 50, 50);
    g2.draw(head);

    Line2D.Double body=new Line2D.Double(30,60, 30,150);
    g2.draw(body);

    Line2D.Double arm1=new Line2D.Double(30,60,75,75);
    g2.draw(arm1);
    Line2D.Double arm2=new Line2D.Double(30,60,-75,-75);
    g2.draw(arm2);

    }
}
这就是给我带来麻烦的代码。我使用的查看器如下所示:

import javax.swing.JFrame;

public class Viewer
{
public static void main(String[] arg)
{
    JFrame frame = new JFrame();
    frame.setSize(1000,500);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    StickFigure fig1=new StickFigure();
    frame.add(fig1);
    frame.setVisible(true);

    }
}
请让我知道我做错了什么,我将不胜感激

Line2D.Double arm2=new Line2D.Double(30,60,-75,-75);
你需要考虑一下你用-75和-75说的是什么。记住,它们构成一个坐标,(0,0)表示Swing中的左上角(除非您明确告诉它不要)。这些坐标在屏幕外的西北方向

尝试以下方法:

Line2D.Double arm2=new Line2D.Double(30,60, 45,75);

尝试为以下两个对象使用正y最后一个坐标:

Line2D.Double arm1=new Line2D.Double(30,60,75,75);
g2.draw(arm1);
Line2D.Double arm2=new Line2D.Double(30,60,-75,75);
g2.draw(arm2);

你是对的,-75-75“将只是一个相反的版本的线”,但当你改变两个坐标,你得到径向simmetry,即simmetry围绕一个点(颈部),因此你的一个手臂是低的,另一个是向上的。在这种情况下,您需要轴对称,因此只需翻转一个坐标;因为人的对称轴是脊柱,并且是垂直的(y方向),所以只需要翻转坐标x。

试试Line2D。Double arm2=new Line2D。Double(30,60,0,45);这是最接近的!谢谢,我要试着把手臂放下。我知道坐标需要移动。谢谢你,正如你所看到的,我不知道我在用Java做什么,哈哈。我用了你的坐标,手臂现在在同一边。我明白你在说什么了。对不起,是的,我猜到了坐标-,只是摆弄它直到它看起来很好:我想我明白你说的,我现在正试图翻转坐标,但它只是两个手臂在同一侧。我觉得我错过了什么,或者把什么搞砸了。。。