新手初学java 尝试编程绘画太极图

我是个新手,对java理解还不深入,看了些java方面的基础视频,自己尝试着把中国的古老的太极图给画出来,经过一些思考和动手,终于把太极图给绘画出来。

记得以前某位高手也画过类似的太极图,不过当时自己才疏学浅,实在看不懂,也没心思看。这次我要自己独立地把太极图给画出来,

个人编程习惯,开始画的草图:

欣赏:从这幅双鱼太极图就可以看出中国的古老文化的博大精深,简单的几笔,黑与白的交会,却勾勒出了如此美妙的图案。

结构剖析:整体结构比较简单,共可分为5个圆,其中有两个圆是半圆,由黑白两种颜色组成。

遇到的困难:如何把黑鱼的的黑色部分画出?

我的思路:先把黑鱼的黑色部分的所有点,通过圆的方程,在圆内还是在圆外,if语句进行判断,如果符合要求,即可。

最后整体效果图:

附java代码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TaiJi extends JFrame {


/**
* @param args
*/
MyJPanel mp=null;
public static void main(String[] args) {
// TODO Auto-generated method stub


TaiJi taiji=new TaiJi();
}
public TaiJi()
{
mp=new MyJPanel();
this.add(mp);
this.setSize(500,500);
this.setLocation(400, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}


}
class MyJPanel extends JPanel 
{
//黑鱼身的点的坐标
int x,y;
public MyJPanel()
{
}
/**
* 画出黑鱼的黑色部分
* 得到鱼身的点的坐标范围
* 并画出所有点
* @param g
*/
public void drawBlack(Graphics g)
{
for(int x=150;x<300;x++)
{
for(int y=0;y<300;y++)
{
if(x>=150)
{
if((x-150)*(x-150)+(y-150)*(y-150)<=150*150)
{
if((x-150)*(x-150)+(y-75)*(y-75)>=25*25)
{
if((x-150)*(x-150)+(y-225)*(y-225)>=75*75)
{
g.drawOval(x, y, 1, 1);
}
}
}
}
}
}
}
/**
* 作画
*/
public void paint(Graphics g)
{
super.paint(g);
g.setColor(Color.black);
//黑鱼头部
g.fillOval(75, 0, 150, 150);
g.setColor(Color.white);
//黑鱼眼
g.fillOval(125, 300/4-25, 50, 50);
g.setColor(Color.black);
//白鱼眼
g.fillOval(125, 300/4*3-25, 50, 50);
//调用画黑鱼的函数
this.drawBlack(g);
g.setColor(Color.white);
g.drawOval(75, 150, 150, 150);
g.setColor(Color.black);
//外缘
g.drawOval(0, 0, 300, 300);
}


}

你可能感兴趣的:(java)