沒有據我所知,這是內置的方法。然而,這裏是您嘗試使用形狀才達到什麼樣的例子:
package application;
import javafx.application.Application;
import javafx.beans.binding.Bindings;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.ProgressBar;
import javafx.scene.effect.InnerShadow;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.scene.shape.Rectangle;
import javafx.scene.shape.Shape;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(final Stage primaryStage) {
final StackPane root = new StackPane();
final ProgressBar bar = new ProgressBar();
final Image image = new Image("https://farm8.staticflickr.com/7036/6952932649_3fc1cfeb8a_o_d.jpg", true);
final ImageView imageView = new ImageView(image);
final Text clip = new Text("JavaFx");
final Scene scene = new Scene(root);
root.setStyle("-fx-background: pink;");
root.setEffect(new InnerShadow());
bar.prefWidthProperty().bind(root.widthProperty());
bar.visibleProperty().bind(Bindings.notEqual(1, image.progressProperty()));
bar.progressProperty().bind(image.progressProperty());
imageView.setFitWidth(800);
imageView.setFitHeight(600);
clip.setFont(Font.font(144.0));
clip.setX(400 - clip.getBoundsInLocal().getWidth()/2);
clip.setY(400 - clip.getBoundsInLocal().getHeight()/2);
setInverseClip(imageView, clip);
root.getChildren().add(bar);
root.getChildren().add(imageView);
primaryStage.setScene(scene);
primaryStage.show();
}
private void setInverseClip(final Node node, final Shape clip) {
final Rectangle inverse = new Rectangle();
inverse.setWidth(node.getLayoutBounds().getWidth());
inverse.setHeight(node.getLayoutBounds().getHeight());
node.setClip(Shape.subtract(inverse, clip));
}
public static void main(final String[] args) {
launch(args);
}
}
它覆蓋相同尺寸的矩形目標節點,從中減去原始剪輯節點,並使用新創建的形狀作爲剪輯到目標節點。
謝謝!對於任何想與我一樣的人,只需查看javafx.scene.Shape.subtract(形狀1,形狀2)。它從第一個Shape切出第二個Shape之後返回一個新節點。 –
Gist不見了;你可以添加一個代碼樣本到SO嗎? –
@ErikHumphrey我可以看到它...... – Line