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);
}
}
运行结果:

Java实现画八卦的更多相关文章
- Java编写画图板程序细节-保存已画图形
没有Java编写画图板程序细节-保存已画图形 一.为何我们要保存画图板上已画图形呢? 有很多人会问,为什么我们一定要保存画图板上已经画好了的图形呢?原因很简单.当我们在画图板上画完自己想画的图形后 ...
- java GUI画满天星
import java.awt.Color; import java.awt.Graphics; import java.awt.Image; import javax.swing.ImageIcon ...
- 用JAVA自己画一张二维码
我们都知道,最近2年移动支付在中国堪称新四大发明之一. 二维码无处不在,特别是最近的支付宝扫码领红包,微信,qq,到处在发,阿里有点攻占腾讯移动支付市场的势头啊~博主忽然就对二维码是怎么画的有了点好奇 ...
- java 你画我猜 了解一下
0-设计思路: 你画我猜顾名思义,有一个人画,一个人猜,两个思路: 1)一个中央服务器,中转数据,两个client端:,a画对应点的数据通过服务器发给客户端b,b通过这些数据进行绘画,换颜色人,等等, ...
- java动态画圈圈。运用多线程,绘图
总结:只是意外的收获吧.之前一篇是老师教的,一个点,从底层开始升起,到鼠标按下的地方开始画圈圈, 现在改变了一下,因为点上升的一个循环和画圈的循环是分开的 现在让点点自己跑,并且边跑边画圈.而且在fo ...
- [Java画图]画函数图像
利用Graphics类画任意显式函数图像,只需修改代码中的F()函数即可,另外调整timesx和timesy参数来分方向放大或缩小图像.需要重定义坐标系. package test; import j ...
- Java Graphics2D 画出文字描边效果
在CSDN看到的,在此记下. (http://bbs.csdn.net/topics/390703095) import javax.swing.*; import java.awt.*; impor ...
- Java GUI 画点
import java.awt.EventQueue; public class Paint { private JFrame frame; /** * Launch the application. ...
- Java GUI画圆。
package ydj; import java.awt.*; import javax.swing.*; public class huayuan extends JFrame { public h ...
随机推荐
- springMVC的bean注入方式
POJO是多例模式,并不是单例模式. servlet是单例的,同一个实例可以同时有多个用户访问 用单例,是因为没必要每个请求都新建一个对象,这样子既浪费CPU又浪费内存:用多例,是为了防止并发问题:单 ...
- Beta阶段项目展示
1.团队简介 韩青长 前端工程师 我是韩青长,技术小白,抱着对软工的好奇和对未来工作的憧憬选了这门课.暂时选择了测试的工作,也对开发和UI有一定兴趣.从前上帝创造了我们,现在轮到我们来创造自己的软件了 ...
- maven管理本地jar包注意事项
今天lucene中集成第三方中文分词器IKAnalyzer的时候遇到了相似的问题:lucene版本4.9.IKAnalyzer版本2012FF_hf1 直接去maven仓库下载,pom配置如下: &l ...
- App Extension访问Cocoapods引入的第三方库
步骤一: PROJECT --info --configurations,将对应的Debug和Release 设置成pods.debug和pods.release 步骤2:编译一下(本人遇到的问 ...
- mysql中Invalid default value for 'stime'问题
在执行mysql数据库时报错 CREATE TABLE `advert_schedule_time` ( `advert_id` int(11) NOT NULL DEFAULT '0' COMMEN ...
- 【bzoj1231】[Usaco2008 Nov]mixup2 混乱的奶牛
题目描述 混乱的奶牛[Don Piele, 2007]Farmer John的N(4 <= N <= 16)头奶牛中的每一头都有一个唯一的编号S_i (1 <= S_i <= ...
- Swift3.0P1 语法指南——构造器
原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programmi ...
- JS学习:第二周——NO.1回调函数
[回调函数] 定义:把一个函数的定义阶段,作为参数,传给另一个函数: 回调函数调用次数,取决于条件: 回调函数可以传参: 回调函数可以给变this指向,默认是window: 回调函数没有返回值,for ...
- ASP.NET运作流程
当我们在浏览器输入域名访问服务器资源时,会向服务器发送Http请求,并经由IIS处理后,交由ASP.NET托管程序处理,进入ASP.NET管道.在IIS内部如何处理我们不需要深入去了解,在ASP.NE ...
- HTML5本地存储
之前对这个还不太熟悉,项目中在账号登录时,获取账号的信息,存储在本地然后随时调用//存储localStorage.setItem('data',值); //获取var information = lo ...