Системы координат и позиционирования
UI Toolkit использует мощную систему макета, которая автоматически рассчитывает положение и размер отдельных элементов на основе параметров макета в их свойствах стиля. Это основано на Flexbox, модели веб-макетирования. Для более подробной информации см. Layout Engine.
Относительные и абсолютные позиции
В UI Toolkit координаты относятся к положению элемента в макете. Вы можете настроить каждый элемент в системе макета на использование относительных или абсолютных координат:
- Относительная: Координаты относительно вычисленного положения элемента. Система макета вычисляет положение элемента, а затем добавляет координаты в качестве смещения. Родительные элементы могут влиять на размер и положение дочерних элементов, так как движок макета учитывает их при вычислении положения элемента. Дочерние элементы могут влиять только на размер родительского элемента.
- Абсолютный: Координаты относительно родительского элемента. Это обходит автоматическое расчет макета и напрямую устанавливает положение элемента. Семейные элементы под одним родителем не влияют на положение элемента. Аналогичным образом, элемент не влияет на положение и размер других братьев под одним родителем.
Каждый визуальный элемент определяет систему координат, используемую для расчета его положения. Вы можете настроить, какая система координат будет использоваться в таблице стилей элемента.
Следующие фрагменты кода C# устанавливают координатное пространство и положение визуального элемента:
var newElement = new VisualElement();
newElement.style.position = Position.Relative;
newElement.style.left = 15;
newElement.style.top = 35;
Происхождение элемента находится в его верхнем левом углу.
Система макета вычисляет свойство VisualElement.layout (тип Rect) для каждого элемента, которое включает в себя конечное положение элемента. Это учитывает относительное или абсолютное положение элемента.
layout.position выражается в точках относительно координатного пространства его родительского объекта.
Каждый VisualElement имеет свойство трансформации (ITransform), которое можно использовать для добавления дополнительного локального смещения к положению и вращению элемента. Смещение не представлено в вычисляемом свойстве макета. По умолчанию transform является идентичностью.
Используйте свойства worldBound для получения окончательных координат окна VisualElement, принимая во внимание как позицию макета, так и преобразование. Эта позиция включает высоту заголовка окна.
Преобразование между системами координат
Свойства VisualElement.layout.position и VisualElement.transform определяют способ преобразования между локальной и родительской системами координат.
VisualElementExtensions статический класс предоставляет следующие методы расширения, преобразующие точки и прямоугольники между системами координат:
WorldToLocalпреобразуетVector2илиRectиз пространстваPanelв референтное пространство внутри элемента.LocalToWorldпреобразуетVector2илиRectв пространственный референтPanel.ChangeCoordinatesToпреобразуетVector2илиRectиз локального пространства одного элемента в локальное пространство другого.