Java Fx setOnMouseDragged 变慢
Java Fx setOnMouseDragged To Slow
我想创建自己的绘画,但是由于某些原因,当我快速移动鼠标而不是创建一条线时,我创建了一堆点。
public class ExtractController {
@FXML
private Canvas canvas;
private GraphicsContext gc ;
public void initialize() {
gc = canvas.getGraphicsContext2D();
canvas.setOnMouseDragged(e->{
double size = 5;
double x = e.getX();
double y = e.getY();
gc.setFill(Color.RED);
gc.fillRect(x, y, size, size);
});
}
}
有没有办法让mouseDragged事件触发得更快?还是有其他方法可以做到这一点?谢谢
您无法控制接收鼠标事件的速度(除此之外,这取决于用户按下鼠标的速度)。
不要画单个点,而是从之前的位置画线:
public class ExtractController {
@FXML
private Canvas canvas;
private GraphicsContext gc ;
private double lastX ;
private double lastY ;
public void initialize() {
gc = canvas.getGraphicsContext2D();
canvas.setOnMousePressed(e -> {
lastX = e.getX();
lastY = e.getY();
});
canvas.setOnMouseDragged(e->{
double size = 5;
double x = e.getX();
double y = e.getY();
gc.setLineWidth(size);
gc.setStroke(Color.RED);
gc.strokeLine(lastX, lastY, x, y);
lastX = x ;
lastY = y ;
});
}
}
我想创建自己的绘画,但是由于某些原因,当我快速移动鼠标而不是创建一条线时,我创建了一堆点。
public class ExtractController {
@FXML
private Canvas canvas;
private GraphicsContext gc ;
public void initialize() {
gc = canvas.getGraphicsContext2D();
canvas.setOnMouseDragged(e->{
double size = 5;
double x = e.getX();
double y = e.getY();
gc.setFill(Color.RED);
gc.fillRect(x, y, size, size);
});
}
}
有没有办法让mouseDragged事件触发得更快?还是有其他方法可以做到这一点?谢谢
您无法控制接收鼠标事件的速度(除此之外,这取决于用户按下鼠标的速度)。
不要画单个点,而是从之前的位置画线:
public class ExtractController {
@FXML
private Canvas canvas;
private GraphicsContext gc ;
private double lastX ;
private double lastY ;
public void initialize() {
gc = canvas.getGraphicsContext2D();
canvas.setOnMousePressed(e -> {
lastX = e.getX();
lastY = e.getY();
});
canvas.setOnMouseDragged(e->{
double size = 5;
double x = e.getX();
double y = e.getY();
gc.setLineWidth(size);
gc.setStroke(Color.RED);
gc.strokeLine(lastX, lastY, x, y);
lastX = x ;
lastY = y ;
});
}
}