当前位置: 首页 > 知识库问答 >
问题:

JavaFX画布-如何在绘制后重新绘制画布?

督德泽
2023-03-14

我编写了这段代码,可以在JavaFX画布上绘制。它可以很好地工作,但我不知道如何重新绘制画布(比如在Swing中),以便在新画布上重新开始绘制。这是我的代码,非常感谢你的帮助!马里奥

public class Main extends Application {

  private static final int WIDTH = 600;
  private static final int HEIGTH = 400;

  @Override
  public void start(Stage primaryStage) {
    //handling the canvas
    final Canvas canvas = new Canvas(WIDTH, HEIGTH);
    final GraphicsContext gc = canvas.getGraphicsContext2D();
    gc.setFill(Color.AQUA);
    gc.fill();
    //Painting with MouseDragged Event 
    canvas.setOnMouseDragged(event -> gc.fillOval(event.getX(),   event.getY(), 25, 25));
    //User a ColorPicke for Color of Painting
    ColorPicker cp = new ColorPicker();
    cp.setOnAction(e -> gc.setFill(cp.getValue()));
    //Layout
    BorderPane root = new BorderPane();
    HBox hb = new HBox(30);
    Button button = new Button("Clear all");

    button.setOnAction(e ->
    /*how to repaint the canvas*/
    System.out.println("How to repaint???"));

    hb.getChildren().addAll(cp, button);
    hb.setPrefHeight(200);
    hb.setAlignment(Pos.CENTER);
    root.setCenter(canvas);
    root.setBottom(hb);
    final Scene scene = new Scene(root);
    primaryStage.setTitle("Hello World!");
    primaryStage.setScene(scene);
    primaryStage.show();
  }

  public static void main(String[] args) {
    launch(args);
  }
}

共有1个答案

谈琛
2023-03-14

通过清除画布:

button.setOnAction(e ->
    gc.clearRect(0, 0, canvas.getWidth(), canvas.getHeight()));
 类似资料:
  • 我目前正在使用画布开发一个JavaFX-Drawing-Application。在GraphicsContext的帮助下,我使用beginPath()和lineTo()方法绘制线条,但我无法找到实现橡皮擦的适当方法。

  • 我正在考虑将我们内部的汽车/测量应用程序从Swing移植到JavaFX,主要是因为它有更好的外观和多点触控支持,但是我找不到一种方法来渲染只有当它们可见时才可以呈现的自定义组件。 为了获得动力,想象一个有10个选项卡的屏幕,每个选项卡内都有一个显示正在测量的一些实时数据的图。任何时候,只能看到一个情节。数据量很大,计算机有足够的能力一次渲染一个情节,但不能同时渲染所有情节。 摇摆版 现在在Swin

  • 我可以绘制图像,但我如何旋转该图像例如45度并绘制它,然后绘制另一个图像与-50度旋转在同一画布? 不适用于我,因为它会旋转所有画布内容。

  • 有没有可能通过它们的方程式在画布中画出曲线呢?如果是,怎么做?假设我有一个数学方程y=0,5*x^2,如何打印方程的图形? 我尝试使用和方法,但未成功。

  • 在这个例子中我们将使用画布(Canvas)创建一个简单的绘制程序。 在我们场景的顶部我们使用行定位器排列四个方形的颜色块。一个颜色块是一个简单的矩形,使用鼠标区域来检测点击。 Row { id: colorTools anchors { horizontalCenter: parent.horizontalCenter