太极图(JAVA实现)

在这里插入图片描述

今天闲的没事干,就自己手绘了一张丑不拉几的太极图,手残没办法,还是让pc来帮我画一张标准一点的吧

在这里插入图片描述
这里我选取JFrame作为容器,利用Graphic画笔进行作画。
这里切入要用的几个函数的API:

> 1. drawLine:  public abstract void drawLine(int x1,
>                               int y1,
>                               int x2,
>                               int y2) 
>  画一条线,使用当前颜色,这个图形中的坐标系统中的点 (x1, y1)(x2, y2)之间。 参数 x1 -第一点的nullx坐标。 y1 -第一点的nully坐标。 x2 -第二点的nullx坐标。 y2 -第二点的nully坐标。
> 
> 2. setColor
>  public abstract void setColor(Color c) 
> 将此图形上下文的当前颜色设置为指定的颜色。所有使用此图形上下文的后续图形操作都使用此指定的颜色。 参数 c -新的渲染色彩。 另请参见:
> Color, getColor()
> 
> 
> 3.drawOval public abstract void drawOval(int x,
>                               int y,
>                               int width,
>                               int height) 
> 绘制椭圆的轮廓。其结果是一个圆或椭圆,适合的 x, y, width指定的矩形内,和 height参数。 椭圆形的占地面积是width + 1像素宽,height + 1像素高。
> 
> 参数 x -椭圆的左上角要画nullx坐标。 y -椭圆的左上角要画nully坐标。 width -椭圆来绘制宽度。 height
> -椭圆来绘制的高度。 另请参见: fillOval(int, int, int, int)
> 
> 4. public abstract void fillOval(int x,
>                               int y,
>                               int width,
>                               int height) 
> 填充一个椭圆形,由指定的矩形与当前颜色。 参数 x -椭圆的左上角要填充的nullx坐标。 y -椭圆的左上角要填充的nully坐标。 width -椭圆要填充的宽度。 height -椭圆形充满高度。 另请参见: drawOval(int, int, int, int)
> 
> 5. drawArc public abstract void drawArc(int x,
>                              int y,
>                              int width,
>                              int height,
>                              int startAngle,
>                              int arcAngle) 绘制一个圆形或椭圆弧的轮廓,覆盖指定的矩形。 产生的电弧从startAngle和延伸arcAngle度,使用当前颜色。角度解释,0 度在3
> 点位置。正值表示逆时针旋转,而负值表示顺时针旋转。
> 
> 电弧的中心是矩形原点为中心(nullx, nully),其大小是由指定的width和height参数。
> 
> 产生的电弧占地面积width + 1像素像素高宽height + 1> 
> 的角度被指定的相对的约束矩形的非平方范围,例如,45度总是落在直线上的中心的椭圆的矩形的右上角。其结果是,如果边界矩形明显长在一个轴比其他的角度,开始和结束的圆弧段将被扭曲的更远沿长轴的界限。
> 
> 参数 x -电弧的左上角要画nullx坐标。 y -电弧的左上角要画nully坐标。 width -电弧被吸引的宽度。 height
> -电弧被吸引的高度。 startAngle开始-角。 arcAngle -弧角的程度,相对于起始角。 另请参见: fillArc(int, int, int, int, int, int) 
> 6. fillArc 
> public abstract void fillArc(int x,
>                              int y,
>                              int width,
>                              int height,
>                              int startAngle,
>                              int arcAngle)
> 填充一个圆形或椭圆形的圆弧覆盖指定的矩形。 产生的电弧从startAngle和延伸arcAngle度。角度解释,0 度在3 点位置。正值表示逆时针旋转,而负值表示顺时针旋转。
> 
> 电弧的中心是矩形原点为中心(nullx, nully),其大小是由指定的width和height参数。
> 
> 产生的电弧占地面积width + 1像素像素高宽height + 1> 
> 的角度被指定的相对的约束矩形的非平方范围,例如,45度总是落在直线上的中心的椭圆的矩形的右上角。其结果是,如果边界矩形明显长在一个轴比其他的角度,开始和结束的圆弧段将被扭曲的更远沿长轴的界限。
> 
> 参数 x -电弧的左上角要填充的nullx坐标。 y -电弧的左上角要填充的nully坐标。 width -弧要填充的宽度。 height
> -电弧被填充的高度。 startAngle开始-角。 arcAngle -弧角的程度,相对于起始角。 另请参见: drawArc(int, int, int, int, int, int)
package Kim_1;

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JFrame;

public class TaiJis extends JFrame{
	public TaiJis() {
		super("太极图");
		this.setSize(800,800);
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	public void paint(Graphics g) {
		super.paint(g);
		g.setColor(Color.BLACK);
		g.fillArc(250, 200, 300, 300, 90, -180);
		g.drawArc(250, 200, 300, 300, 90, 180);
		g.setColor(Color.WHITE);
		g.fillArc(250, 200, 300, 300, 90, 180);	
		g.fillArc(325, 200, 150, 150,90, -180);
		g.setColor(Color.BLACK);
		g.fillArc(325, 350, 150, 150,90, 180);
		g.fillOval(375, 260, 37, 37);
		g.setColor(Color.WHITE);
		g.fillOval(375, 405, 37, 37);
	}
	public static void main(String[] args) {
		new TaiJis();
	}
	
}

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java Applet 是一种在网页中嵌入 Java 程序的技术,通过使用 Java Applet 可以在网页中实现一些动态效果。下面是一个简单的 Java Applet 绘制太极图的示例代码: ```java import java.applet.*; import java.awt.*; public class Taiji extends Applet implements Runnable { int x, y, r; int angle = 0; boolean flag = true; Thread t; public void init() { x = getWidth() / 2; y = getHeight() / 2; r = Math.min(getWidth(), getHeight()) / 2 - 50; setBackground(Color.white); } public void start() { if (t == null) { t = new Thread(this); t.start(); } } public void run() { while (true) { if (flag) { angle += 5; if (angle >= 360) { angle = 0; } } else { angle -= 5; if (angle <= -360) { angle = 0; } } try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } repaint(); } } public void stop() { if (t != null) { t = null; } } public void paint(Graphics g) { g.setColor(Color.black); g.drawOval(x - r, y - r, r * 2, r * 2); g.fillArc(x - r, y - r, r * 2, r * 2, 90 + angle / 2, -180); g.setColor(Color.white); g.fillArc(x - r, y - r, r * 2, r * 2, 90 + angle / 2, 180); g.setColor(Color.black); g.fillOval(x - r / 2, y - r, r, r); g.setColor(Color.white); g.fillOval(x - r / 2, y, r, r); } public boolean mouseDown(Event e, int x, int y) { flag = !flag; return true; } } ``` 在这个例子中,我们创建了一个名为 Taiji 的 Java Applet,通过继承 Applet 类并实现 Runnable 接口来实现动态效果。 在 init 方法中,我们初始化了太极图的圆心坐标和半径,并设置了背景颜色。 在 start 方法中,我们创建并启动了一个新的线程,在这个线程中不断更新太极图的旋转角度,并调用 repaint 方法重新绘制太极图。 在 run 方法中,我们使用一个循环来不断更新太极图的旋转角度。当 flag 为 true 时,太极图顺时针旋转;当 flag 为 false 时,太极图逆时针旋转。我们通过调用 Thread.sleep 方法来控制更新速度。 在 paint 方法中,我们绘制太极图的两个半圆和两个小圆。我们使用 setColor 方法设置颜色,使用 drawOval 和 fillOval 方法绘制圆形,使用 fillArc 方法绘制半圆形。 在 mouseDown 方法中,我们处理了鼠标单击事件,将 flag 取反以改变太极图的旋转方向。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值