Как создавать геометрические фигуры в JavaFX 2.0?

У меня есть проект, над которым я работаю, JavaFX 2.0, и это приложение для рисования. На данный момент я создал перо и ползунок размера пера, палитру цветов, ластик и функции отмены. Я еще не знаю, как создавать базовые фигуры, такие как прямоугольник, круг или многоугольник. Формы должны иметь нестандартные размеры, и мне нужно нарисовать их в моей сцене. Может кто-нибудь мне помочь?

Буду очень признателен за любую помощь.

Большое спасибо!


person Valentin Vrinceanu    schedule 25.04.2012    source источник


Ответы (2)


Ознакомьтесь с документацией API: javafx.scene.shape.Shape..
Пример использования: Нарисовать прямоугольник. Примеры Circle и Line также существуют там.

person Uluk Biy    schedule 25.04.2012
comment
Может быть, я не очень ясно объяснил себя. Мне нужно построить собственные прямоугольники и круги. Спасибо - person Valentin Vrinceanu; 25.04.2012
comment
Я имею в виду, что я на своем холсте. Я тяну мышь, и прямоугольник создается! - person Valentin Vrinceanu; 25.04.2012
comment
Если вы можете рисовать линию пером, то вы можете нарисовать Shape вместо пути/линии таким же образом, используя события мыши, я думаю. Разница в том, что вы должны удалить нарисованную фигуру и перерисовать новую во время события перемещения мыши, пока мышь не будет отпущена. - person Uluk Biy; 25.04.2012
comment
Я пробовал rect = new Rectangle(); rect.setMouseTransparent (истина); rect.setStrokeWidth(sampleLine.getStrokeWidth()); rect.setStroke(canvas.getFill()); lineGroup.getChildren(). добавить (прямо); rect.getElements().add(новый MoveTo(me.getSceneX(), me.getSceneY())); Проблема в том, что у прямоугольника нет getElements. И я получаю ошибку в последней строке! И это делается с эффектом мыши. - person Valentin Vrinceanu; 25.04.2012
comment
Вы можете подумать, что Rectangle автоматически имеет собственный список PathElements. Поэтому достаточно установить свойства прямоугольника: r.setX(me.getSceneX()); r.setY(me.getSceneY());, где me — координата первого щелчка, и, возможно, вычислить r.setWidth(width); r.setHeight(height); в соответствии с движениями мыши. - person Uluk Biy; 25.04.2012

Вам нужно будет получить графический компонент компонента, в котором вы хотите рисовать.

если у вас есть панель, это будет что-то вроде:

 Graphics g = jPanel1.getGraphics();
 Graphics2D g2d = (Graphics2D)g;

Graphics2D предлагает вам все способы рисования того, что вы ищете. Для получения списка методов завершения проверьте документы в оракуле:

http://docs.oracle.com/javase/7/docs/api/java/awt/Graphics2D.html

Изменить: запутанный JavaSE. Для JavaFX вы можете прочитать небольшое руководство здесь: http://docs.oracle.com/javafx/1.3/howto/Shapes-Tutorial.html

person Andres Perez    schedule 25.04.2012
comment
Мне нужно что-то для JavaFX 2.0, а не для JavaSE. В любом случае спасибо за ответ. - person Valentin Vrinceanu; 25.04.2012
comment
О, извините, я просто запутался. Но я нашел вам действительно хорошую страницу оракула, где они объясняют, как делать основные фигуры, и на самом деле это выглядит довольно просто: docs.oracle.com/javafx/1.3/howto/Shapes-Tutorial.html - person Andres Perez; 25.04.2012
comment
Да, это JavaFX, но JavaFX 1.3! Мне нужно для 2.0! Спасибо - person Valentin Vrinceanu; 26.04.2012