Применение нескольких заливок к объектам JavaFX двумя способами: какой лучше? [закрыто]JAVA

Программисты JAVA общаются здесь
Anonymous
Применение нескольких заливок к объектам JavaFX двумя способами: какой лучше? [закрыто]

Сообщение Anonymous »

Я хочу применить к эллипсу два линейных градиента. Есть два способа:
Путь 1: я могу создать два эллипса в определенной позиции и применить каждый градиент отдельно к каждому эллипсу.
Способ 2: я могу создать панель, задать ее форму эллипса и применить оба градиента одновременно, используя стиль JavaFX.
Код обоих вариантов способы следующие:
Способ 1

Код: Выделить всё

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.layout.Region;
import javafx.scene.paint.Color;
import javafx.scene.paint.CycleMethod;
import javafx.scene.paint.LinearGradient;
import javafx.scene.paint.Stop;
import javafx.scene.shape.Ellipse;
import javafx.stage.Stage;

public class Test85 extends Application {

public static void main(String[] args) {
launch();
}

public static void setCustomSize(Region region, double width, double height) {
region.setMaxSize(width, height);
region.setPrefSize(width, height);
region.setMinSize(width, height);
}

@Override
public void start(Stage stage) throws Exception {

Pane container = new Pane();
Scene scene = new Scene(container);
stage.setScene(scene);
stage.show();

Ellipse ellipse1 = new Ellipse(500, 250, 300, 150);
Ellipse ellipse2 = new Ellipse(500, 250, 300, 150);

ellipse1.setFill(new LinearGradient(0, 0, 1, 0, true,
CycleMethod.NO_CYCLE,
new Stop(0, Color.color(1, 0, 0, 1)),
new Stop(1, Color.color(0, 0, 1, 1))));
ellipse1.setStroke(Color.BLACK);
ellipse1.setStrokeWidth(5);

ellipse2.setFill(new LinearGradient(0, 0, 0, 1, true,
CycleMethod.NO_CYCLE,
new Stop(0, Color.color(0, 1, 0, 0.5)),
new Stop(1, Color.color(1, 1, 0, 0.5))));
ellipse2.setStroke(Color.BLACK);
ellipse2.setStrokeWidth(5);

container.getChildren().addAll(ellipse1, ellipse2);

}

}
Способ 2

Код: Выделить всё

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.layout.Region;
import javafx.scene.shape.Ellipse;
import javafx.stage.Stage;

public class Test84 extends Application {

public static void main(String[] args) {
launch();
}

public static void setCustomSize(Region region, double width, double height) {
region.setMaxSize(width, height);
region.setPrefSize(width, height);
region.setMinSize(width, height);
}

@Override
public void start(Stage stage) throws Exception {

Pane container = new Pane();
Scene scene = new Scene(container);
stage.setScene(scene);
stage.show();

Pane pane = new Pane();
setCustomSize(pane, 600, 300);

container.getChildren().add(pane);

pane.setTranslateX(300);
pane.setTranslateY(100);

pane.setStyle("-fx-background-color:" +
" linear-gradient(from 0.0% 0.0% to 100.0% 0.0%, #ff0000ff 0.0%, #0000ffff 100.0%)," +
"linear-gradient(from 0.0% 0.0% to 0.0% 100.0%, #00ff0080 0.0%, #ffff0080 100.0%);" +
"-fx-border-color: black;" +
"-fx-border-width: 5;");

pane.setShape(new Ellipse(1, 1));

}

}
Оба генерируют следующий результат
Изображение

Мой вопрос:
Какой из способов лучше и более масштабируем? Допустим, я хочу добавить 10 заливок разных видов к разным фигурам в моей программе. Какой способ снижает использование памяти и обеспечивает производительность программного обеспечения?

Подробнее здесь: https://stackoverflow.com/questions/790 ... -is-better

Вернуться в «JAVA»