八卦是由多個圓疊加而成,如果我們讓每個圓都有自己的顏色,那么具體結構便一目了然,如下圖所示:
顯然只要令對應的圓顏色相同,就能達到我們預期的效果。
用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); } }
運行結果: