/* * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. */ package test; import javafx.application.Application; import javafx.event.EventHandler; import javafx.scene.Group; import javafx.scene.PerspectiveCamera; import javafx.scene.Scene; import javafx.scene.input.MouseEvent; import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; import javafx.stage.Stage; public class DirtyRegionsMovingCamera extends Application { double ax, ay; @Override public void start(Stage stage) { stage.setTitle("Hello Rectangle"); Group root = new Group(); Scene scene = new Scene(root, 600, 450); scene.setFill(Color.LIGHTGREEN); final PerspectiveCamera cam = new PerspectiveCamera(); root.getChildren().add(cam); scene.setCamera(cam); scene.setOnMousePressed(new EventHandler() { @Override public void handle(MouseEvent event) { ax = event.getSceneX(); ay = event.getSceneY(); } }); scene.setOnMouseDragged(new EventHandler() { @Override public void handle(MouseEvent event) { cam.setTranslateX(cam.getTranslateX() + ax - event.getSceneX()); cam.setTranslateY(cam.getTranslateY() + ay - event.getSceneY()); ax = event.getSceneX(); ay = event.getSceneY(); } }); Rectangle rect = new Rectangle(25, 40, 100, 50); rect.setFill(Color.RED); root.getChildren().add(rect); stage.setScene(scene); stage.show(); } /** * @param args the command line arguments */ public static void main(String[] args) { Application.launch(args); } }