为什么我不能用fillpolygon()绘制矩形



我正在学习Java图形。我正在尝试画简单的人物。但是我注意到以下代码无法正确绘制:

public class Draw extends JPanel {
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        int[] xpoints = new int[] { 20, 50, 80 };
        int[] ypoints = new int[] { 40, 10, 40 };
        g.fillPolygon(xpoints, ypoints, 3);
        int[] recXp = new int[] { 20, 80, 20, 80 };
        int[] recYp = new int[] { 50, 60, 50, 60 };
        g.fillPolygon(recXp, recYp, 4);
    }
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        Draw panel = new Draw();
        frame.add(panel);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(800, 600);
    }
}

为了实现我想要的东西,我必须使用

import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Draw extends JPanel {
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        int[] xpoints = new int[] { 20, 50, 80 };
        int[] ypoints = new int[] { 40, 10, 40 };
        g.fillPolygon(xpoints, ypoints, 3);
        g.fillRect(20, 50, 60, 10);
    }
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        Draw panel = new Draw();
        frame.add(panel);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(800, 600);
    }
}

为什么会发生这种情况?我想念什么吗?抱歉,如果这是一个小问题,我只是想更好地理解Java。

    int[] recXp = new int[] { 20, 80, 20, 80 };
    int[] recYp = new int[] { 50, 60, 50, 60 };

您只有两组点。

您需要4个不同的点。矩形的每个角度一个。

类似:

  1. 顶/左(20,50(
  2. 顶/右(x与上面不同,y是相同的(
  3. 底部/右(x与上述相同,y是不同的。
  4. 底部/左(x与首先相同,y保存如上(

相关内容

  • 没有找到相关文章

最新更新