用javaFX写一个可视化雨刷模拟程序
时间: 2023-11-22 12:56:14 浏览: 70
好的,以下是一个简单的用JavaFX实现可视化雨刷模拟程序的示例代码:
```java
import javafx.animation.AnimationTimer;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class RainBrushSimulation extends Application {
private static final int WIDTH = 800; // 画布宽度
private static final int HEIGHT = 600; // 画布高度
private static final int BRUSH_SIZE = 20; // 雨刷大小
private static final int BRUSH_SPEED = 10; // 雨刷速度
private double brushX = WIDTH / 2; // 雨刷初始位置
private double brushY = HEIGHT / 2;
@Override
public void start(Stage primaryStage) throws Exception {
// 创建画布
Canvas canvas = new Canvas(WIDTH, HEIGHT);
GraphicsContext gc = canvas.getGraphicsContext2D();
gc.setFill(Color.WHITE);
gc.fillRect(0, 0, WIDTH, HEIGHT);
// 创建场景
StackPane root = new StackPane(canvas);
Scene scene = new Scene(root);
// 添加动画
AnimationTimer timer = new AnimationTimer() {
@Override
public void handle(long now) {
// 清空画布
gc.setFill(Color.WHITE);
gc.fillRect(0, 0, WIDTH, HEIGHT);
// 绘制雨刷
gc.setFill(Color.BLACK);
gc.fillOval(brushX - BRUSH_SIZE / 2, brushY - BRUSH_SIZE / 2, BRUSH_SIZE, BRUSH_SIZE);
// 更新雨刷位置
brushY += BRUSH_SPEED;
if (brushY > HEIGHT + BRUSH_SIZE / 2) {
brushY = -BRUSH_SIZE / 2;
}
}
};
timer.start();
// 显示窗口
primaryStage.setScene(scene);
primaryStage.setTitle("Rain Brush Simulation");
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
```
运行程序后,你将看到一个黑色的圆形雨刷在画布上不停地上下移动,模拟雨刷在车窗玻璃上刷水的效果。你可以修改BRUSH_SIZE和BRUSH_SPEED常量的值,调整雨刷的大小和速度。
阅读全文