Я создаю Shape
и мне нужно move
в horizontal position
на Canvas
, то есть на x-axis
, без использования timeline
Перемещение фигур в оси х с OnMouseMoved на холсте в JavaFX
Class Square
нарисовать квадрат и вставить в canvas
положение
public class Square{
//calculate the position of the rand column to
//draw and insert in the position of the canvas
public void drawSquare(GraphicsContext gc) {
//Square Shadow
//gc.rect(posX, posY, w, h);
gc.rect(1, 53, 50, 50);
gc.fill();
gc.beginPath();
//Square
gc.beginPath();
gc.setFill(Color.WHITE);
gc.setStroke(Color.BLACK);
gc.setLineWidth(2);
//gc.rect(posX, posY, w, h);
gc.rect(1, 53, 48, 48);
gc.fill();
gc.stroke();
}
}
Новый Canvas instance
с height = 450
и width = 600
Canvas canvas = new Canvas();
canvas.setHeight(450);
canvas.setWidth(600);
и GraphicsContext
к draw square
GraphicsContext gc = canvas.getGraphicsContext2D();
shape
является create
и draw square
Square square= new Square();
square.drawSquare(gc);
и пример drawSquare
с canvas
и mouse event
к move square
на canvas
на X-Axis
, я сделал что-то , но он не работает, может быть, может иметь другое решение
canvas.setOnMouseMoved((MouseEvent event) -> {
//select the square and move on x-axis
});
Любое предложение?
ли что-то еще нарисованы на вашем 'Canvas'? Вам также может быть полезно использовать ['Rectangle'] (https://docs.oracle.com/javase/8/javafx/api/javafx/scene/shape/Rectangle.html). Если вы прикрепляете слушателя к своему холсту, вам нужно будет проверить, что мышь находится на прямоугольнике, удерживая трек или когда он был в последний раз нарисован. Использование 'Rectangle' спасет вас от этой проблемы. Кроме того, вместо рисования 'Path' было бы намного проще использовать метод GraphicsContext # strokeRect'. – MikaelF
Я хотел что-то сказать, но я помню свое дело. :) – Elltz