八卦是由多个圆叠加而成,如果我们让每个圆都有自己的颜色,那么具体结构便一目了然,如下图所示:

显然只要令对应的圆颜色相同,就能达到我们预期的效果。

用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);
}
}

运行结果:

Java实现画八卦的更多相关文章

  1. Java编写画图板程序细节-保存已画图形

    没有Java编写画图板程序细节-保存已画图形   一.为何我们要保存画图板上已画图形呢? 有很多人会问,为什么我们一定要保存画图板上已经画好了的图形呢?原因很简单.当我们在画图板上画完自己想画的图形后 ...

  2. java GUI画满天星

    import java.awt.Color; import java.awt.Graphics; import java.awt.Image; import javax.swing.ImageIcon ...

  3. 用JAVA自己画一张二维码

    我们都知道,最近2年移动支付在中国堪称新四大发明之一. 二维码无处不在,特别是最近的支付宝扫码领红包,微信,qq,到处在发,阿里有点攻占腾讯移动支付市场的势头啊~博主忽然就对二维码是怎么画的有了点好奇 ...

  4. java 你画我猜 了解一下

    0-设计思路: 你画我猜顾名思义,有一个人画,一个人猜,两个思路: 1)一个中央服务器,中转数据,两个client端:,a画对应点的数据通过服务器发给客户端b,b通过这些数据进行绘画,换颜色人,等等, ...

  5. java动态画圈圈。运用多线程,绘图

    总结:只是意外的收获吧.之前一篇是老师教的,一个点,从底层开始升起,到鼠标按下的地方开始画圈圈, 现在改变了一下,因为点上升的一个循环和画圈的循环是分开的 现在让点点自己跑,并且边跑边画圈.而且在fo ...

  6. [Java画图]画函数图像

    利用Graphics类画任意显式函数图像,只需修改代码中的F()函数即可,另外调整timesx和timesy参数来分方向放大或缩小图像.需要重定义坐标系. package test; import j ...

  7. Java Graphics2D 画出文字描边效果

    在CSDN看到的,在此记下. (http://bbs.csdn.net/topics/390703095) import javax.swing.*; import java.awt.*; impor ...

  8. Java GUI 画点

    import java.awt.EventQueue; public class Paint { private JFrame frame; /** * Launch the application. ...

  9. Java GUI画圆。

    package ydj; import java.awt.*; import javax.swing.*; public class huayuan extends JFrame { public h ...

随机推荐

  1. win7里边使用telnet命令为什么提示telnet不是内部或外部命令,也不是可运行的程序或批处理文件

    Win7默认没有安装telnet功能,所以你直接用telnet命令是用不了的:你可以去“控制面板”-->“程序”(在左下角)--->“打开或关闭Windows功能”,勾上“telnet客户 ...

  2. UVA1637Double Patience(概率 + 记忆化搜索)

    训练指南P327 题意:36张牌分成9堆, 每堆4张牌.每次拿走某两堆顶部的牌,但需要点数相同.如果出现多种拿法则等概率的随机拿. 如果最后拿完所有的牌则游戏成功,求成功的概率. 开个9维数组表示每一 ...

  3. Network Basic Commands Summary

    Network Basic Commands Summary set or modify hostname a)     temporary ways hostname NEW_HOSTNAME, b ...

  4. 字符串作为map的key

    #include <map> #include <string> struct cmp_str{ bool operator()(char const* a, char con ...

  5. Netty源码分析之客户端启动过程

    一.先来看一下客户端示例代码. public class NettyClientTest { public void connect(int port, String host) throws Exc ...

  6. express源码剖析1

    在通读源码之前,先把一些比较难理解的代码吃透: 1.EventEmitter.prototype mixin(app, EventEmitter.prototype, false); app为一个函数 ...

  7. thinkphp3.2和phpexcel导入

    先整个最基础的代码,理解了这个,后面的就非常简单了 $file_name= './Upload/excel/123456.xls'; import("Org.Util.PHPExcel&qu ...

  8. Linux下数据恢复软件extundelete

    extundelete软件专门解决意外删除事件的,有时候不小心 rm -rf * 就可能毁掉有用的数据.因此就出现了这个恢复工具,但这个工具也不是万能的,删除数据后一定要停止所以的写操作.以免Inod ...

  9. Bubble Cup 8 finals D. Tablecity (575D)

    题意: (无输入,纯输出题) 一个城市用1000列2行的格子表示,一个小偷藏在城市的某一处. 在每一小时的开始, 在(X, Y)位置的小偷可以移动到 (X - 1, Y), (X + 1, Y),(X ...

  10. 利用Java代码在某些时刻创建Spring上下文

    上一篇中,描述了如何使用Spring隐式的创建bean,但当我们需要引进第三方类库添加到我们的逻辑上时,@Conponent与@Autowired是无法添加到类上的,这时,自动装配便不适用了,我们需要 ...