java 风车_Java兴趣编程-转动的大风车

原标题:Java兴趣编程-转动的大风车

package com.xfonline.test2;

import javax.swing.*;

import java.awt.*;

import java.awt.geom.*;

import java.awt.event.*;

class MyCanvas extends JPanel implements ActionListener{

javax.swing.Timer timer;

Arc2D arc1,arc2,arc3,arc4,arc5;

Line2D line;

Ellipse2D ellipse;

AffineTransform trans;

BasicStroke bs;

MyCanvas() {

arc1=new Arc2D.Double(60,60,100,100,0,20,Arc2D.PIE);

arc2=new Arc2D.Double(60,60,100,100,72,20,Arc2D.PIE);

arc3=new Arc2D.Double(60,60,100,100,144,20,Arc2D.PIE);

arc4=new Arc2D.Double(60,60,100,100,216,20,Arc2D.PIE);

arc5=new Arc2D.Double(60,60,100,100,288,20,Arc2D.PIE);

line=new Line2D.Double(110,110,110,190);

ellipse=new Ellipse2D.Double(100,100,20,20);

bs=new BasicStroke(8f,BasicStroke.CAP_SQUARE,BasicStroke.JOIN_ROUND);

trans=new AffineTransform();

timer = new javax.swing.Timer(10,this);

timer.start();

}

public void actionPerformed(ActionEvent e) {

repaint();

}

public void paint(Graphics g) {

g.clearRect(0,0,this.getBounds().width,this.getBounds().height);

Graphics2D g_2d=(Graphics2D)g;

g_2d.setStroke(bs);

g_2d.setColor(Color.blue);

g_2d.draw(line);

g_2d.setColor(Color.black);

g_2d.fill(ellipse);

trans.rotate(2.0*Math.PI/180,110,110);

g_2d.setTransform(trans);

g_2d.fill(arc1);

g_2d.fill(arc2);

g_2d.fill(arc3);

g_2d.fill(arc4);

g_2d.fill(arc5);

}

}

阅读

责任编辑:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 Java 实现转动风车的代码: ```java import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.RenderingHints; import javax.swing.JFrame; import javax.swing.JPanel; public class Windmill extends JPanel implements Runnable { private static final long serialVersionUID = 1L; private int angle = 0; public Windmill() { Thread t = new Thread(this); t.start(); } public void run() { while (true) { angle++; repaint(); try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } } } public void paint(Graphics g) { super.paint(g); Graphics2D g2d = (Graphics2D) g; g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setColor(Color.BLUE); Point center = new Point(150, 150); int radius = 100; int x = (int) (center.x + radius * Math.cos(Math.toRadians(angle))); int y = (int) (center.y + radius * Math.sin(Math.toRadians(angle))); g2d.drawLine(center.x, center.y, x, y); g2d.drawLine(center.x, center.y, x, center.y); g2d.drawLine(x, center.y, x, y); g2d.fillOval(center.x - 10, center.y - 10, 20, 20); } public static void main(String[] args) { JFrame frame = new JFrame("Windmill"); frame.add(new Windmill()); frame.setSize(300, 300); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } ``` 这个程序创建了一个 `Windmill` 类,继承了 `JPanel` 并实现了 `Runnable` 接口,用来在一个新的线程中不断更新风车的角度并重绘。 在 `paint` 方法中,我们使用 `Graphics2D` 对象来画出风车。首先,我们设置了抗锯齿渲染,然后指定了风车的颜色为蓝色。接着,我们计算出风车旋转后的末端坐标,然后画出三条线段和一个圆形零件来组成风车。 在 `main` 方法中,我们创建了一个 `JFrame` 并添加了一个 `Windmill` 对象,然后设置了窗口大小、可见性和关闭操作。运行该程序,你应该能看到一个旋转的风车
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值