我正在尝试使用JavaFX实现类似于Paint的应用程序。我试图先在a(x0,y0)b(x1,y1)之间画一条线,但是在释放鼠标左键后,该线才显示在画布上。
当我尝试使用MouseEvent._MOUSE_DRAGGED解决该问题时,只要我按住鼠标左键,就会画很多线。
我正在尝试使其更自然,例如Paint,可以在屏幕上拖动线条,但是只有在松开鼠标左键时才在画布上绘制线条。
Canvas c;
GraphicsContext gc;
GeometricObject go;
ColorPicker colorPicker;
Button drawLine, drawRectangle;
TextField defineWidth;
private boolean isDrawLine, isDrawRectangle;
double initX = 0, initY = 0, finalX = 0, finalY = 0, width;
private void actionHandler(ActionEvent event) {
if (event.getSource().equals(drawLine)) {
isDrawLine = true;
}
}
private void pressHandler(MouseEvent me) {
initX = me.getX();
initY = me.getY();
}
private void releaseHandler(MouseEvent me) {
gc.strokeLine(initX, initY, finalX, finalY);
}
private void moveHandler(MouseEvent me) {
finalX = me.getX();
finalY = me.getY();
gc.setFill(colorPicker.getValue());
gc.setLineWidth(1);
}
我考虑过将鼠标拖动时将绘制的线存储在ArrayList中,然后删除所有这些线,但最后一个在释放鼠标左键时绘制的线...