21xrx.com
2024-12-23 00:40:33 Monday
登录
文章检索 我的文章 写文章
Java绘制五角星代码示例
2023-06-15 07:08:51 深夜i     --     --
Java

在Java编程中,我们常常需要进行图形绘制的操作,其中绘制五角星也是很常见的。那么在这里,就为大家分享一下Java绘制五角星的代码示例。

为了绘制五角星,我们首先需要了解五角星的参数,包括五角星中心坐标、半径、内角、边数等。根据这些参数,我们就可以使用Java中Graphics2D类的绘图方法,比如drawPolygon,来绘制出漂亮的五角星。

下面是Java绘制五角星的代码示例:


import java.awt.*;

import javax.swing.*;

public class DrawStar extends JPanel {

  private Color color;

  private int centerX, centerY, radius, sides = 5;

  public DrawStar(Color color, int centerX, int centerY, int radius)

    this.color = color;

    this.centerX = centerX;

    this.centerY = centerY;

    this.radius = radius;

  

  private Polygon getPolygon() {

    double angle, x, y;

    Polygon polygon = new Polygon();

    for (int i = 0; i < sides; i++) {

      angle = i * 2 * Math.PI / sides - Math.PI / 2;

      x = centerX + radius * Math.cos(angle);

      y = centerY + radius * Math.sin(angle);

      polygon.addPoint((int) x, (int) y);

      angle += Math.PI / sides;

      x = centerX + (radius / 2) * Math.cos(angle);

      y = centerY + (radius / 2) * Math.sin(angle);

      polygon.addPoint((int) x, (int) y);

    }

    return polygon;

  }

  @Override

  protected void paintComponent(Graphics g) {

    super.paintComponent(g);

    Graphics2D g2d = (Graphics2D) g;

    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

    g2d.setColor(color);

    g2d.fill(getPolygon());

  }

  public static void main(String[] args) {

    JFrame frame = new JFrame("DrawStar");

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    frame.add(new DrawStar(Color.YELLOW, 150, 150, 100));

    frame.setSize(400, 400);

    frame.setLocationRelativeTo(null);

    frame.setVisible(true);

  }

}

其中,DrawStar类继承JPanel,实现了绘制五角星的方法。通过调用构造函数传入颜色、中心坐标和半径等参数,然后通过计算角度、坐标等值,调用getPolygon方法得到五角星的多边形对象,最后在paintComponent方法中进行绘制。

通过运行上述代码,我们可以得到一个黄色的五角星,如下图所示:

![java绘制五角星代码示例](https://img-blog.csdn.net/20160527212712595)

本文的 绘图, 五角星

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复