0
如何加載任何圖像並將其放置在圓形視圖中,並且用戶使用鼠標可以將其圓形視圖中的圖像拖動到所需的方向。有什麼控制要做到這一點。我試過並使用了一個填充了圖像的圓,但是我不能移動圖像,也不能在其中選擇視圖端口。任何想法?將圖像放在圓圈視圖中
如何加載任何圖像並將其放置在圓形視圖中,並且用戶使用鼠標可以將其圓形視圖中的圖像拖動到所需的方向。有什麼控制要做到這一點。我試過並使用了一個填充了圖像的圓,但是我不能移動圖像,也不能在其中選擇視圖端口。任何想法?將圖像放在圓圈視圖中
使用setClip(...)選擇「視口」。 您需要自己實現拖動。
事情是這樣的:
import javafx.application.Application;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.event.EventHandler;
import javafx.geometry.Point2D;
import javafx.scene.Scene;
import javafx.scene.image.ImageView;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
public class ImageInCircleExample extends Application {
@Override
public void start(Stage primaryStage) {
final Pane root = new Pane();
final ImageView imageView = new ImageView("http://upload.wikimedia.org/wikipedia/commons/thumb/5/58/Sunset_2007-1.jpg/640px-Sunset_2007-1.jpg");
final Circle clip = new Circle(300, 200, 200);
imageView.setClip(clip);
root.getChildren().add(imageView);
// enable dragging:
final ObjectProperty<Point2D> mouseAnchor = new SimpleObjectProperty<>();
imageView.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
mouseAnchor.set(new Point2D(event.getSceneX(), event.getSceneY()));
}
});
imageView.setOnMouseDragged(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
double deltaX = event.getSceneX() - mouseAnchor.get().getX();
double deltaY = event.getSceneY() - mouseAnchor.get().getY();
imageView.setLayoutX(imageView.getLayoutX() + deltaX);
imageView.setLayoutY(imageView.getLayoutY() + deltaY);
clip.setCenterX(clip.getCenterX() - deltaX);
clip.setCenterY(clip.getCenterY() - deltaY);
mouseAnchor.set(new Point2D(event.getSceneX(), event.getSceneY()));
}
});
final Scene scene = new Scene(root, 600, 400);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
正是我所需要的,完美! –
代碼工作,但沒有與選定的圖像網址 –