编写一个JavaFX程序,使用橡皮条技术画圆。圆的大小以鼠标拖拽的方式确定。使用鼠标点击确定一个固定的位置作为圆心,计算当前鼠标位置与圆心的距离以确定圆的半径大小。
时间: 2024-02-19 20:04:02 浏览: 7
下面是一个使用JavaFX实现橡皮筋技术画圆的示例代码:
```java
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Line;
import javafx.stage.Stage;
public class RubberBandCircle extends Application {
private double centerX, centerY;
@Override
public void start(Stage primaryStage) {
Pane root = new Pane();
// 创建橡皮筋线段
Line rubberBand = new Line();
rubberBand.setStroke(Color.BLACK);
// 创建圆形
Circle circle = new Circle();
circle.setFill(Color.TRANSPARENT);
circle.setStroke(Color.BLACK);
root.getChildren().addAll(rubberBand, circle);
// 鼠标按下时记录圆心位置
root.setOnMousePressed(event -> {
centerX = event.getX();
centerY = event.getY();
circle.setCenterX(centerX);
circle.setCenterY(centerY);
});
// 鼠标拖拽时更新橡皮筋线段和圆形
root.setOnMouseDragged(event -> {
double radius = Math.sqrt(Math.pow(event.getX() - centerX, 2) + Math.pow(event.getY() - centerY, 2));
rubberBand.setStartX(centerX);
rubberBand.setStartY(centerY);
rubberBand.setEndX(event.getX());
rubberBand.setEndY(event.getY());
circle.setRadius(radius);
});
// 鼠标松开时清除橡皮筋线段
root.setOnMouseReleased(event -> {
rubberBand.setStartX(0);
rubberBand.setStartY(0);
rubberBand.setEndX(0);
rubberBand.setEndY(0);
});
Scene scene = new Scene(root, 400, 400);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
```
在这个示例程序中,我们创建了一个橡皮筋线段和一个圆形,当鼠标按下时记录圆心位置,当鼠标拖拽时根据圆心位置和当前鼠标位置计算圆形的半径,并更新橡皮筋线段和圆形的位置和大小。当鼠标松开时清除橡皮筋线段。