FXML тег <opaqueInsets>

Я экспериментирую с макетами FXML, чтобы понять, как размещать узлы с полями, границами и отступами. Используя SceneBuilder, я создал фиктивный макет FXML:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.geometry.Insets?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.HBox?>


<HBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <AnchorPane prefWidth="180.0" style="-fx-border-width: 5; -fx-border-color: blue;">
         <HBox.margin>
            <Insets bottom="2.0" left="2.0" right="2.0" top="2.0" />
         </HBox.margin>
         <children>
            <AnchorPane layoutY="8.0" style="-fx-background-color: orange;" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
         </children>
         <padding>
            <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
         </padding>
         <opaqueInsets>
            <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
         </opaqueInsets>
      </AnchorPane>
      <AnchorPane prefHeight="200.0" prefWidth="200.0" style="-fx-border-color: red; -fx-border-width: 10;" />
      <AnchorPane prefHeight="200.0" prefWidth="200.0" style="-fx-border-color: gold; -fx-border-width: 15;">
         <children>
            <AnchorPane layoutX="-14.0" layoutY="100.0" />
         </children>
      </AnchorPane>
   </children>
</HBox>

Однако в SceneBuilder есть поля значений "Непрозрачные вставки":

Непрозрачные вставки

И я добавил их в вышеупомянутом FXML.

Но для чего они? Похоже, они не влияют на внешний вид макета, и я не нахожу ссылки на них в разделе Введение в FXML. Являются ли они "остатками" от FXML 1.0?

1 ответ

Решение

opaqueInsets свойство определяется в Region, Цитирование непосредственно из документации:

Определяет область области, в которой нарисованы полностью непрозрачные пиксели. Это используется для различных оптимизаций производительности. Пиксели в этой области ДОЛЖНЫ БЫТЬ полностью непрозрачными, иначе могут возникнуть артефакты рендеринга. Приложение отвечает либо с помощью кода, либо с помощью CSS, чтобы гарантировать, что opaqueInsets корректен для Региона на основе фона и границ этого региона. Значения для каждого из вставок должны быть действительными числами, а не NaN или Infinity. Если никаких известных вставок не существует, тогда opaqueInsets должен быть установлен в null.

То, как я читаю это, вы можете определить opaqueInsets на Region чтобы дать подсказку, что область внутри этих вставок полностью непрозрачна. Это предоставляется в качестве подсказки производительности - вероятно, идея состоит в том, что средство визуализации может игнорировать любые узлы с более низким z-порядком в пределах этой области.

Другие вопросы по тегам