如何在 java swing 中绘制并填充平行四边形?

How do you draw and fill a parallelogram in java swing?

我环顾四周,我很惊讶我找不到用 java 秋千绘制和填充平行四边形的方法。有简单的方法吗?

提前感谢您的帮助。

swing 中的所有(或至少大部分)绘图都是通过继承 JPanel 并覆盖 paintComponent 方法来完成的。所以它会这样开始:

public class MyPanel extends JPanel{

    @Override
    public void paintComponent(Graphics g){
        //Drawing stuff....
    }
}

从这里开始,您将要创建一个平行四边形 Shape,并填充它。供您使用的 Shape 的最简单实现是 Path2D.

public class MyPanel extends JPanel{

    private Path2D.Double parallelogram;

    public MyPanel(){
        parallelogram = new Path2D.Double();
        parallelogram.moveTo(0,0);
        parallelogram.lineTo(50,0);
        parallelogram.lineTo(100,50);
        parallelogram.lineTo(50,50);
        parallelogram.closePath();

        setPreferredSize(new Dimension(100, 100));
    }

    @Override
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D)g;
        g2d.setColor(Color.BLACK);
        g2d.fill(parallelogram);
    }
}

然后创建该面板的实例并将其添加到 JFrame:

public static void main(String[] args){
    JFrame f = new JFrame();
    f.add(new MyPanel(), BorderLayout.CENTER);
    f.pack();
    f.setVisible(true);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

建议:

  • 使用 Path2D 对象创建形状,
  • 使用它的 moveTo(...) 方法开始你的平行四边形
  • 继续使用其 lineTo(...) 方法绘制线条。
  • 在 JPanel 的 paintComponent(Graphics g) 方法覆盖中绘制。
  • 在此方法中,将 Graphics 对象转换为 Graphics2D 对象。
  • 然后调用 fill(yourShape) 传入您的 Path2D 对象。