JavaFX - 2D-фигуры
В предыдущей главе мы видели базовое приложение JavaFX, где мы узнали, как создать пустое окно и как нарисовать линию на плоскости XY JavaFX. Помимо линии, мы также можем нарисовать несколько других 2D-фигур.
2D форма
В общем, двухмерная фигура - это геометрическая фигура, которую можно нарисовать на плоскости XY, включая линию, прямоугольник, круг и т. Д.
Используя библиотеку JavaFX, вы можете рисовать -
Предопределенные формы, такие как линия, прямоугольник, круг, эллипс, многоугольник, полилиния, кубическая кривая, четырехугольная кривая, дуга.
Элементы пути, такие как элемент пути MoveTO, линия, горизонтальная линия, вертикальная линия, кубическая кривая, квадратичная кривая, дуга.
В дополнение к этому вы также можете нарисовать 2D-форму, проанализировав путь SVG.
Каждая из вышеупомянутых двухмерных фигур представлена классом, и все эти классы принадлежат пакету javafx.scene.shape. Класс с именемShape является базовым классом всех двумерных фигур в JavaFX.
Создание 2D-формы
Чтобы создать диаграмму, вам необходимо -
- Создайте экземпляр соответствующего класса требуемой формы.
- Задайте свойства формы.
- Добавьте объект формы в группу.
Создание соответствующего класса
Чтобы создать 2-мерную фигуру, прежде всего вам нужно создать экземпляр соответствующего класса.
Например, если вы хотите создать строку, вам необходимо создать экземпляр класса с именем Line следующим образом:
Line line = new Line();
Установка свойств формы
После создания экземпляра класса вам необходимо установить свойства формы с помощью методов установки.
Например, чтобы нарисовать линию, вам нужно передать ее координаты x и y начальной и конечной точки линии. Вы можете указать эти значения, используя соответствующие методы установки, следующим образом:
//Setting the Properties of the Line
line.setStartX(150.0f);
line.setStartY(140.0f);
line.setEndX(450.0f);
line.setEndY(140.0f);
Добавление объекта формы в группу
Наконец, вам нужно добавить объект формы в группу, передав его в качестве параметра конструктора, как показано ниже.
//Creating a Group object
Group root = new Group(line);
В следующей таблице представлен список различных форм (классов), предоставляемых JavaFX.
S.No | Форма и описание |
---|---|
1 |
Линия
Линия - это геометрическая структура, соединяющая две точки. ВLine класс пакета javafx.scene.shape представляет собой линию в плоскости XY. |
2 |
Прямоугольник
В общем, прямоугольник - это четырехсторонний многоугольник, который имеет две пары параллельных и совпадающих сторон, причем все внутренние углы являются прямыми углами. В JavaFX прямоугольник представлен классом с именемRectangle. Этот класс принадлежит пакетуjavafx.scene.shape. |
3 |
Прямоугольник с закругленными углами
В JavaFX вы можете рисовать прямоугольник с острыми краями или с изогнутыми краями, а прямоугольник с изогнутыми краями известен как прямоугольник с закругленными углами. |
4 |
Круг
Круг - это линия, образующая замкнутый контур, каждая точка которого находится на фиксированном расстоянии от центральной точки. В JavaFX круг представлен классом с именемCircle. Этот класс принадлежит пакетуjavafx.scene.shape. |
5 |
Эллипс
Эллипс определяется двумя точками, каждая из которых называется фокусом. Если взять любую точку эллипса, сумма расстояний до точек фокусировки будет постоянной. Размер эллипса определяется суммой этих двух расстояний. В JavaFX эллипс представлен классом с именем Ellipse. Этот класс принадлежит пакетуjavafx.scene.shape. |
6 |
Многоугольник
Замкнутая форма, образованная несколькими копланарными линейными сегментами, соединенными встык. В JavaFX многоугольник представлен классом с именемPolygon. Этот класс принадлежит пакетуjavafx.scene.shape. |
7 |
Ломаная линия
Полилиния - это то же самое, что и многоугольник, за исключением того, что полилиния не замкнута в конце. Или непрерывная линия, состоящая из одного или нескольких сегментов. В JavaFX полилиния представлена классом с именемPolygon. Этот класс принадлежит пакетуjavafx.scene.shape. |
8 |
Кубическая кривая
Кубическая кривая - это параметрическая кривая Безье в плоскости XY - это кривая степени 3. В JavaFX кубическая кривая представлена классом с именем CubicCurve. Этот класс принадлежит пакетуjavafx.scene.shape. |
9 |
QuadCurve
Квадратичная кривая - это параметрическая кривая Безье в плоскости XY - это кривая степени 2. В JavaFX QuadCurve представлена классом с именем QuadCurve. Этот класс принадлежит пакетуjavafx.scene.shape. |
10 |
Дуга
Дуга - это часть кривой. В JavaFX дуга представлена классом с именемArc. Этот класс принадлежит к пакету -javafx.scene.shape. Типы дугиВ дополнение к этому мы можем нарисовать три типа дуги Open, Chord, Round. |
11 |
SVGPath
В JavaFX мы можем создавать изображения, анализируя пути SVG. Такие формы представлены классом с именемSVGPath. Этот класс принадлежит пакетуjavafx.scene.shape. У этого класса есть свойство с именемcontentтипа данных String. Это представляет собой закодированную строку SVG Path, из которой должно быть нарисовано изображение. |
Рисование большего количества фигур с помощью класса Path
В предыдущем разделе мы увидели, как рисовать некоторые простые предопределенные формы, создавая экземпляры классов и задавая соответствующие параметры.
Но только этих предопределенных форм недостаточно для построения более сложных форм, кроме примитивов, предоставляемых javafx.shape package.
Например, если вы хотите нарисовать графический элемент, как показано на следующей схеме, вы не можете полагаться на эти простые формы.
Класс Path
Для рисования таких сложных структур JavaFX предоставляет класс с именем Path. Этот класс представляет собой геометрический контур фигуры.
Он прикреплен к наблюдаемому списку, который содержит различные Path Elements такие как moveTo, LineTo, HlineTo, VlineTo, ArcTo, QuadCurveTo, CubicCurveTo.
При создании экземпляра этот класс создает путь на основе заданных элементов пути.
Вы можете передать элементы пути этому классу при его создании следующим образом:
Path myshape = new Path(pathElement1, pathElement2, pathElement3);
Или вы можете получить наблюдаемый список и добавить все элементы пути, используя addAll() метод следующим образом -
Path myshape = new Path();
myshape.getElements().addAll(pathElement1, pathElement2, pathElement3);
Вы также можете добавлять элементы по отдельности, используя метод add () как -
Path myshape = new Path();
myshape.getElements().add(pathElement1);
Переход к элементу пути
Элемент Path MoveToиспользуется для перемещения текущей позиции пути в указанную точку. Обычно он используется для установки начальной точки фигуры, нарисованной с использованием элементов контура.
Он представлен классом с именем LineTo пакета javafx.scene.shape. Он имеет 2 свойства двойного типа данных, а именно:
X - Координата x точки, до которой должна быть проведена линия из текущего положения.
Y - Координата Y точки, до которой должна быть проведена линия из текущего положения.
Вы можете создать переход к элементу пути, создав экземпляр класса MoveTo и передав координаты x, y новой точки следующим образом:
MoveTo moveTo = new MoveTo(x, y);
Если вы не передадите конструктору никаких значений, тогда новая точка будет установлена в (0,0).
Вы также можете установить значения для координаты x, y, используя соответствующие методы установки следующим образом:
setX(value);
setY(value);
Пример - рисование сложного пути
В этом примере мы покажем, как нарисовать следующую фигуру с помощью Path, MoveTo и Line классы.
Сохраните этот код в файле с именем ComplexShape.java.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.shape.LineTo;
import javafx.scene.shape.MoveTo;
import javafx.scene.shape.Path;
public class ComplexShape extends Application {
@Override
public void start(Stage stage) {
//Creating a Path
Path path = new Path();
//Moving to the starting point
MoveTo moveTo = new MoveTo(108, 71);
//Creating 1st line
LineTo line1 = new LineTo(321, 161);
//Creating 2nd line
LineTo line2 = new LineTo(126,232);
//Creating 3rd line
LineTo line3 = new LineTo(232,52);
//Creating 4th line
LineTo line4 = new LineTo(269, 250);
//Creating 4th line
LineTo line5 = new LineTo(108, 71);
//Adding all the elements to the path
path.getElements().add(moveTo);
path.getElements().addAll(line1, line2, line3, line4, line5);
//Creating a Group object
Group root = new Group(path);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Drawing an arc through a path");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Скомпилируйте и выполните сохраненный файл java из командной строки, используя следующие команды.
javac ComplexShape.java
java ComplexShape
При выполнении вышеупомянутая программа генерирует окно JavaFX, отображающее дугу, которая рисуется от текущей позиции до указанной точки, как показано ниже.
Ниже приведены различные элементы (классы) пути, предоставляемые JavaFX. Эти классы существуют в пакетеjavafx.shape. Все эти классы наследуют классPathElement.
S.No | Форма и описание |
---|---|
1 |
LineTo
Элемент пути lineиспользуется для рисования прямой линии к точке с указанными координатами от текущей позиции. Он представлен классом с именемLineTo. Этот класс принадлежит пакетуjavafx.scene.shape. |
2 |
HlineTo
Элемент пути HLineToиспользуется для рисования горизонтальной линии к точке в указанных координатах от текущего положения. Он представлен классом с именемHLineTo. Этот класс принадлежит пакетуjavafx.scene.shape. |
3 |
VLineTo
Элемент пути vertical lineиспользуется для рисования вертикальной линии к точке в указанных координатах от текущего положения. Он представлен классом с именемVLineTo. Этот класс принадлежит пакетуjavafx.scene.shape. |
4 |
QuadCurveTo
Квадратичная кривая элемента пути используется для рисования quadratic curveв точку в указанных координатах от текущего положения. Он представлен классом с именемQuadraticCurveTo. Этот класс принадлежит пакетуjavafx.scene.shape. |
5 |
CubicCurveTo
Элемент пути cubic curveиспользуется для рисования кубической кривой в точку с указанными координатами из текущего положения. Он представлен классом с именемCubicCurveTo. Этот класс принадлежит пакетуjavafx.scene.shape. |
6 |
ArcTo
Элемент пути Arcиспользуется для рисования дуги к точке в указанных координатах от текущего положения. Он представлен классом с именемArcTo. Этот класс принадлежит пакетуjavafx.scene.shape. |
Свойства 2D-объектов
Для всех двухмерных объектов вы можете установить различные свойства, такие как заливка, обводка, StrokeType и т. Д. В следующем разделе обсуждаются различные свойства 2D-объектов.
- Тип инсульта
- Ширина штриха
- Штриховая заливка
- Stroke
- Линия хода
- Предел хода митры
- Крышка линии хода
- Smooth
Операции с 2D-объектами
Если мы добавляем в группу более одной формы, первая форма перекрывается второй, как показано ниже.
В дополнение к преобразованиям (поворот, масштабирование, перевод и т. Д.), Переходам (анимациям) вы также можете выполнять три операции с 2D-объектами, а именно: Union, Subtraction и Intersection.
S.No | Работа и описание |
---|---|
1 |
Союз Операция
Эта операция принимает две или более фигур в качестве входных данных и возвращает занимаемую ими площадь. |
2 |
Пересечение операции
Эта операция принимает две или более фигур в качестве входных данных и возвращает область пересечения между ними. |
3 |
Операция вычитания
Эта операция принимает на входе две или более фигур. Затем он возвращает площадь первой формы, за исключением области, перекрытой второй. |