Java實現畫八卦


八卦是由多個圓疊加而成,如果我們讓每個圓都有自己的顏色,那么具體結構便一目了然,如下圖所示:

顯然只要令對應的圓顏色相同,就能達到我們預期的效果。

用Java就能輕松畫出來:

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class BaGua extends JPanel {

    public BaGua() {
        this.setPreferredSize(new Dimension(600, 580)); // 設置首選大小
    }

    /**
     * 畫八卦
     */
    public void drawBaGua(Graphics2D g2d) {
        Color color1 = Color.WHITE; // 顏色1
        Color color2 = Color.BLACK; // 顏色2

        // 抗邊緣鋸齒
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);

        // 畫背景
        // g2d.clearRect(0, 0, this.getWidth(), this.getHeight());
        g2d.setColor(new Color(220, 230, 240));
        g2d.fillRect(0, 0, this.getWidth(), this.getHeight());

        // 畫左半邊大圓白背景
        g2d.setColor(color1);
        g2d.fillArc(100, 100, 400, 400, 90, 180);
        // 畫右半邊大圓黑背景
        g2d.setColor(color2);
        g2d.fillArc(100, 100, 400, 400, -90, 180);

        // 畫上面白色圓
        g2d.setColor(color1);
        g2d.fillOval(200, 100, 200, 200);
        // 畫下面黑色圓
        g2d.setColor(color2);
        g2d.fillOval(200, 300, 200, 200);

        // 畫上面白色圓內的小黑圓
        g2d.setColor(color2);
        g2d.fillOval(270, 170, 60, 60);
        // 畫下面黑色圓內的小白圓
        g2d.setColor(color1);
        g2d.fillOval(270, 370, 60, 60);

        // 畫邊緣的黑弧線
        g2d.setStroke(new BasicStroke(2)); // 設置畫筆寬度
        g2d.setColor(color2);
        // g2d.drawArc(100, 100, 400, 400, 0, 360);
        g2d.drawOval(100, 100, 400, 400);
    }

    public void paint(Graphics g) {
        drawBaGua((Graphics2D) g);
    }

    public static void main(String[] args) {
        JFrame win = new JFrame("八卦");
        win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        win.add(new BaGua());
        win.pack();
        win.setLocationRelativeTo(null);
        win.setVisible(true);
    }
}

運行結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM