java动态画图(cos曲线)

动态画图的实现方法:

1️⃣先完成静态图的最终类型

2️⃣找到动态元素(即动态画图是根据什么元素 动态画的)

下面例子的动态元素根据曲线的x从0到720,所以动态元素是曲线的中间状态的x值的最大值

3️⃣创建一个线程然后疯狂repaint

因为JCommonent 的 paintComponent方法只能刻画一帧,
所以需要创建一个线程来调节动态元素,然后再调用repaint方法实现动态画图

import javax.swing.*;
import java.awt.*;
import java.awt.geom.Line2D;


/**
 * @author dj
 * @version 1.0
 **/

public class CosFrame extends JFrame {
    public static void main(String[] args) {
        CosFrame frame = new CosFrame();

        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {

                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true);
                CoordinateAxis coordinateAxis = new CoordinateAxis();
                frame.add(coordinateAxis);
                Thread thread = new Thread(coordinateAxis);
                thread.start();
                frame.setSize(900, 900);
                frame.pack();

            }
        });
    }
}


class CoordinateAxis extends JComponent implements Runnable {
    final static int pi = (int) Math.PI * 50;
    Graphics2D g2;
    private int long_cos;
    public void paintComponent(Graphics g) {
        g2 = (Graphics2D) g;
        //以(200,200)作为基点
        Line2D lineX = new Line2D.Double(0, 200, 1000, 200);
        Line2D lineY = new Line2D.Double(200, 0, 200, 1000);
        g2.draw(lineX);
        g2.draw(lineY);
        for (int i = 0; i < long_cos; i++) {
            int X = i + 200;
//            final double cos = Math.cos(i /180.0 * Math.PI);
            int Y = (int) (200 - Math.cos(i / 180.0 * Math.PI) * 160);
            g2.drawString(".", X, Y);
//           通过控制long_cos 动态地展现绘制的过程


        }
    }

    @Override
    public void run() {
        while (long_cos<720){
            long_cos += 5;
            repaint();
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }


        }
    }


}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿了个猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值