zoukankan      html  css  js  c++  java
  • 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);
        }
    }

    运行结果:

  • 相关阅读:
    博客园博客排版(js样式实例)
    vue项目iframe的传值问题
    纯css、js 的H5页面对接echarts
    css 在一定区域内滚动显示,不修改父级样式
    架构图以及vue的简介
    HTTP协议 详解
    mysql:The user specified as a definer ('xxx'@'%') does not exist 解决方法
    table-tree 表格树、树形数据处理、数据转树形数据
    记我在github上参与的Star增长最快的十万级项目。。。
    浏览器将URL变成一个屏幕上显示的网页的过程?
  • 原文地址:https://www.cnblogs.com/wuqianling/p/5895629.html
Copyright © 2011-2022 走看看