Splayer
Setembro 4, 2017, 12:19am
#1
Galeris, to tentando pegar um pedaço da imagem de um ImageView usando um Retangulo com bordas e setFill(null) para limitar a parte que eu quero.
DE:
PARA:
CÓDIGO:
Rectangle retangulo = new Rectangle(200, 200);
ImageView background = new ImageView("/bg.jpg");
Pane painel = new Pane(background, retangulo);
@Override
public void start(Stage primaryStage) throws Exception {
retangulo.setFill(null);
retangulo.setStroke(Color.WHITE);
retangulo.setStrokeWidth(5);
retangulo.setTranslateX(70);
retangulo.setTranslateY(20);
Image imageFinal = pscr(painel);
painel.setPrefSize(600, 600);
painel.getChildren().add(new ImageView(imageFinal));
primaryStage.setScene(new Scene(painel));
primaryStage.show();
}
public Image pscr(Node node) {
SnapshotParameters param = new SnapshotParameters();
WritableImage snapshot = node.snapshot(param, null);
BufferedImage tempImg = SwingFXUtils.fromFXImage(snapshot, null);
return new Image();
}
Valeu!
diego12
Setembro 4, 2017, 10:34am
#2
Como não sei o objetivo, então seria mais ou menos:
Image image = background.getImage();
PixelReader pixelReader = image.getPixelReader();
WritableImage snapshot = new WritableImage(pixelReader, (int)retangulo.getX(), (int)retangulo.getY(), (int)retangulo.getWidth(), (int)retangulo.getHeight());
// BufferedImage tempImg = SwingFXUtils.fromFXImage(snapshot, null);
mas se quiser atualizar o background, adicione background.setImage(snapshot);
1 curtida
Splayer
Setembro 4, 2017, 7:36pm
#3
Resumidamente eu to tentando colocar um imagem em um ImageView através de outro ImageView mas só pegando um pedaço, que estará limitado pelo retângulo, a parte inteira desse Shape. Tudo isso em tempo-real, na execução
Tem como me ajudar?
diego12
Setembro 5, 2017, 12:04am
#4
Image image = background.getImage();
PixelReader pixelReader = image.getPixelReader();
WritableImage snapshot = new WritableImage(pixelReader, (int)retangulo.getX(), (int)retangulo.getY(), (int)retangulo.getWidth(), (int)retangulo.getHeight());
outroImageView.setImage(snapshot);
diego12
Setembro 5, 2017, 12:15am
#5
Vc poderia usar o viewport também:
outroImageView.setImage(background.getImage());
Rectangle2D viewport = new Rectangle2D(retangulo.getX(), retangulo.getY(), retangulo.getWidth(),retangulo.getHeight());
outroImageView.setViewport(viewport);
https://docs.oracle.com/javase/8/javafx/api/javafx/scene/image/ImageView.html
1 curtida