О специальных эффектах в JavaFX

О специальных эффектах в JavaFX - манекенах

Специальные эффекты в JavaFX могут позволить вам делать такие вещи, как приукрашивание внешнего вида узлов на вашем графике сцены, добавляя специальные эффекты, такие как размытия, тени, цветовые смещения, свечение и т. Д. , Вы даже можете добавить перспективу, чтобы придать вашему приложению трехмерный вид без необходимости выполнять фактическое 3D-программирование.

Специальные эффекты в JavaFX происходят из класса Effect, абстрактного класса, который имеет большое количество подклассов, которые вы можете использовать для создания специального эффекта. Есть всего 17 подклассов класса Effect, но вам может не понадобиться изучать все 17. Вместо этого начните с фокусировки на тех эффектах, которые позволяют сделать ваши фигуры более реалистичными, добавляя размытость, тени, отражения и свечение.

Все эффекты работают аналогичным образом. Во-первых, вы создаете экземпляр класса эффекта, вызывая его конструктор по умолчанию. Затем вы можете установить свойства эффекта, вызвав один или несколько заданных методов. (Во многих случаях значения свойств по умолчанию являются подходящими, поэтому вы часто можете пропустить этот шаг.) Наконец, вы применяете эффект к узлу, вызывая метод setEffect узла.

Например, вот немного кода, который создает прямоугольник, заполняет его, а затем добавляет тень:

 Прямоугольник r1 = новый прямоугольник (50, 50, 100, 100); r1. setFill (цвет. LIGHTGRAY); r1. setStroke (цвет BLACK); r1. setStrokeWidth (2); DropShadow shadow1 = новый DropShadow (); r1. setEffect (shadow1); 

На этом рисунке показан результат этого эффекта. Как вы можете видеть, прямоугольник окружен тонкой тенью.

Метод setEffect определяется классом Node, что означает, что вы можете применить эффект к любому узлу вашего графика сцены. Эффект применяется не только к узлу, метод setEffect которого вы вызываете, но и к любым дочерним элементам этого узла. Фактически, если вы вызываете setEffect на корневой узел сцены, эффект будет применен ко всей сцене.