【发布时间】:2017-02-12 22:11:54
【问题描述】:
我有一个使用GraphicsContext 绘制图片的应用程序示例,其工作方式如下图所示。
问题是选择和移动只有blue circle水平与CanvasMouseEvent和MouseClicked
public class JavaFXTest extends Application {
@Override
public void start(Stage primaryStage) {
Group root = new Group();
Canvas canvas = new Canvas(300,100);
GraphicsContext gc = canvas.getGraphicsContext2D();
Stop[] stops;
LinearGradient gradient;
// outer circle
stops = new Stop[]{new Stop(0, Color.LIGHTSKYBLUE), new Stop(1, Color.BLUE)};
gradient = new LinearGradient(0.5, 0, 0.5, 1, true, CycleMethod.NO_CYCLE, stops);
gc.setFill(gradient);
gc.fillOval(10, 14, 40, 40);
gc.fill();
gc.stroke();
// Inner circle
stops = new Stop[]{new Stop(0, Color.BLUE), new Stop(1, Color.LIGHTSKYBLUE)};
gradient = new LinearGradient(0, 0, 1, 1, true, CycleMethod.NO_CYCLE, stops);
gc.setFill(gradient);
gc.fillOval(13, 17, 34, 34);
gc.fill();
gc.stroke();
root.getChildren().add(canvas);
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
结果就是这样:
可以用canvas.setOnMouseClicked在canvas中选择blue circle,用canvas.setOnMouseMoved在水平中移动,不知道@987654335的位置 @? ——
canvas.setOnMouseMoved((MouseEvent e) -> {
});
canvas.setOnMouseClicked((MouseEvent e) -> {
});
【问题讨论】:
-
如果你只是在Scene Graph 中而不是画布中的节点,这种事情通常更容易。如果您决定改用场景图节点,这里是an example of how to drag the nodes around。
标签: canvas javafx javafx-2 javafx-8