我正在使用几何变换,一切顺利,但在图像视图中,当我应用变换然后在imageview中更改图像时,新图像获得前一个图像的所有变换 .

i need to reset my image view when i load new image but i din't find any solution searching long time on internet. so how i will do it???

这里是我的Controller.java类代码,我通过它在fxml文件中应用转换和我的ui代码 .

public class Controller {

private double width;
private double height;
private static double translateValueX;
private static double translateValueY;
private double translateFactor=10;
private boolean xAxis = true;
private double rotationAngel = 45;
private double zoomFactor = 1.2;
private static double scaleValueX=1;
private static double scaleValueY=1;
private double scaleFactor=.5;

@FXML
private ImageView imageView = new ImageView();

@FXML
private Label imageLoadText = new Label();

@FXML
private JFXButton loadImageBtn;

@FXML
private JFXButton zoomInBtn;

@FXML
private JFXButton zoomOutBtn;

@FXML
private JFXRadioButton xAxisCheck;

@FXML
private JFXRadioButton yAxisCheck;


@FXML
void loadImage(ActionEvent event) throws FileNotFoundException {

    FileChooser fc = new FileChooser();
    fc.getExtensionFilters().addAll(new FileChooser.ExtensionFilter("Image File", "*.jpg", "*.jpeg,", "*.png"));
    File imagePath = fc.showOpenDialog(null);

    if (imagePath != null) {
        Image image = new Image(new FileInputStream(imagePath.getAbsolutePath()));
        height = image.getHeight();
        width = image.getWidth();
        imageLoadText.setText(imagePath.getAbsolutePath());
        imageView.setImage(image);
    }
}

@FXML
void forwardRotation(ActionEvent event) {

    imageView.setRotate(imageView.getRotate() + rotationAngel);
}

@FXML
void backwardRotation(ActionEvent event) {

    imageView.setRotate(imageView.getRotate() - rotationAngel);
}

@FXML
void zoomIn(ActionEvent event) {

    width *= zoomFactor;
    height *= zoomFactor;
    imageView.setFitWidth(width);
    imageView.setFitHeight(height);
    if (zoomOutBtn.isDisable())
        zoomOutBtn.setDisable(false);
}

@FXML
void zoomOut(ActionEvent event) {

    width /= zoomFactor;
    height /= zoomFactor;
    imageView.setFitWidth(width);
    imageView.setFitHeight(height);
    if (width / zoomFactor < 50 || height / zoomFactor < 50)
        zoomOutBtn.setDisable(true);
}

@FXML
void forwardTranslate(ActionEvent event) {
    if (xAxis){
        translateValueX += translateFactor;
        imageView.setTranslateX(translateValueX);
    }
    else{
        translateValueY += translateFactor;
        imageView.setTranslateY(translateValueY);
    }
}

@FXML
void backwardTranslate(ActionEvent event) {
    if (xAxis){
        translateValueX -= translateFactor;
        imageView.setTranslateX(translateValueX);
    }
    else{
        translateValueY -= translateFactor;
        imageView.setTranslateY(translateValueY);
    }
}

@FXML
void axisSelected(ActionEvent event) {

    if (xAxisCheck.isSelected())
        xAxis = true;
    if (yAxisCheck.isSelected())
        xAxis = false;
}

@FXML
void forwardScale(ActionEvent event) {
    if (xAxis){
        scaleValueX += scaleFactor;
        imageView.setScaleX(scaleValueX);
    }
    else{
        scaleValueY += scaleFactor;
        imageView.setScaleY(scaleValueY);
    }
}

@FXML
void backwardScale(ActionEvent event) {
    if (xAxis){
        scaleValueX -= scaleFactor;
        imageView.setScaleX(scaleValueX);
    }
    else{
        scaleValueY -= scaleFactor;
        imageView.setScaleY(scaleValueY);
    }
}

@FXML
void shearing(ActionEvent event){

    Shear shear=new Shear();
    shear.setX(0.4);
    imageView.getTransforms().add(shear);
}

}