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

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

用Java就能轻松画出来:

  1. import java.awt.BasicStroke;
  2. import java.awt.Color;
  3. import java.awt.Dimension;
  4. import java.awt.Graphics;
  5. import java.awt.Graphics2D;
  6. import java.awt.RenderingHints;
  7.  
  8. import javax.swing.JFrame;
  9. import javax.swing.JPanel;
  10.  
  11. public class BaGua extends JPanel {
  12.  
  13. public BaGua() {
  14. this.setPreferredSize(new Dimension(600, 580)); // 设置首选大小
  15. }
  16.  
  17. /**
  18. * 画八卦
  19. */
  20. public void drawBaGua(Graphics2D g2d) {
  21. Color color1 = Color.WHITE; // 颜色1
  22. Color color2 = Color.BLACK; // 颜色2
  23.  
  24. // 抗边缘锯齿
  25. g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
  26. RenderingHints.VALUE_ANTIALIAS_ON);
  27.  
  28. // 画背景
  29. // g2d.clearRect(0, 0, this.getWidth(), this.getHeight());
  30. g2d.setColor(new Color(220, 230, 240));
  31. g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
  32.  
  33. // 画左半边大圆白背景
  34. g2d.setColor(color1);
  35. g2d.fillArc(100, 100, 400, 400, 90, 180);
  36. // 画右半边大圆黑背景
  37. g2d.setColor(color2);
  38. g2d.fillArc(100, 100, 400, 400, -90, 180);
  39.  
  40. // 画上面白色圆
  41. g2d.setColor(color1);
  42. g2d.fillOval(200, 100, 200, 200);
  43. // 画下面黑色圆
  44. g2d.setColor(color2);
  45. g2d.fillOval(200, 300, 200, 200);
  46.  
  47. // 画上面白色圆内的小黑圆
  48. g2d.setColor(color2);
  49. g2d.fillOval(270, 170, 60, 60);
  50. // 画下面黑色圆内的小白圆
  51. g2d.setColor(color1);
  52. g2d.fillOval(270, 370, 60, 60);
  53.  
  54. // 画边缘的黑弧线
  55. g2d.setStroke(new BasicStroke(2)); // 设置画笔宽度
  56. g2d.setColor(color2);
  57. // g2d.drawArc(100, 100, 400, 400, 0, 360);
  58. g2d.drawOval(100, 100, 400, 400);
  59. }
  60.  
  61. public void paint(Graphics g) {
  62. drawBaGua((Graphics2D) g);
  63. }
  64.  
  65. public static void main(String[] args) {
  66. JFrame win = new JFrame("八卦");
  67. win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  68. win.add(new BaGua());
  69. win.pack();
  70. win.setLocationRelativeTo(null);
  71. win.setVisible(true);
  72. }
  73. }

运行结果:

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. Beta阶段项目展示

    1.团队简介 韩青长 前端工程师 我是韩青长,技术小白,抱着对软工的好奇和对未来工作的憧憬选了这门课.暂时选择了测试的工作,也对开发和UI有一定兴趣.从前上帝创造了我们,现在轮到我们来创造自己的软件了 ...

  2. C#微信公众平台接入示例代码

    http://mp.weixin.qq.com/wiki/17/2d4265491f12608cd170a95559800f2d.html 这是微信公众平台提供的接入指南.官网只提供了php的示例代码 ...

  3. 个人作业——week3

    1.软件工程师的成长 拜读了多位优秀前辈的文章后,感觉十分复杂,虽然说不上是醍醐灌顶的那种大彻大悟,但是确实的感觉到自己内心中某个部分被真切的感触到了.推荐的文章语言都比较平易近人,感觉就像是和多年未 ...

  4. Spring MVC学习笔记——完整的用户登录

    1.搭建环境的第一步是导包,把下面这些包都导入工程中 /media/common/工作/Ubuntu软件/SpringMVC_jar包整理/aop/media/common/工作/Ubuntu软件/S ...

  5. 使用strings查看二进制文件中的字符串

    使用strings查看二进制文件中的字符串 今天介绍的这个小工具叫做strings,它实现功能很简单,就是找出文件内容中的可打印字符串.所谓可打印字符串的涵义是,它的组成部分都是可打印字符,并且以nu ...

  6. MVC IIS环境部署注意事项

    环境:MVC3.0,IIS7 Mvc3.0的部署除像正常部署aspx程序一样外,另外还需要注意的几点: 1. 安装MVC3.0 确保服务器上安装了MVC3.0,默认版本是“3.0.20105.0” 2 ...

  7. WIN10下java8的开发环境配置与第一个java程序

    一.开发环境配置 1.在官网上下载jdk-8u111-windows-x64.exe 2.运行安装包,可以自定义安装路径 3.进入环境变量设置: 计算机右键-->属性-->高级系统设置-- ...

  8. 用swing也可以做出好看的界面

    用Swing做出的例子:JavaFX做出的界面:后来又做出了自己编写的一套基于Synth的L&F,其与直接在代码中重绘某个组件不同,最大优点是具有可插拔性,即在不改变原有程序代码的情况下,用户 ...

  9. Javascript面向对象特性实现封装、继承、接口详细案例——进级高手篇

    Javascript面向对象特性实现(封装.继承.接口) Javascript作为弱类型语言,和Java.php等服务端脚本语言相比,拥有极强的灵活性.对于小型的web需求,在编写javascript ...

  10. Linux学习之九--mysql的简单使用

    mysql创建数据库时指定编码很重要,很多开发者都使用了默认编码,但是我使用的经验来看,制定数据库的编码可以很大程度上避免倒入导出带来的乱码问题. 一.创建数据库: 指定UTF-8: CREATE D ...