UI Toolkit uses a powerful layout system that automatically calculates the position and size of individual elements based on the layout parameters in their style properties. This is based on Flexbox, a web layout model. For more information, see Layout Engine.
UI Toolkit には 2 種類の座標があります。
Each visual element determines the coordinate system used to calculate its position. You can configure which coordinate system to use in the element stylesheet.
以下のコードは、コードを使ってビジュアル要素の座標空間と位置を設定する方法を示しています。
var newElement = new VisualElement();
newElement.style.position = Position.Relative;
newElement.style.left = 15;
newElement.style.top = 35;
要素の原点は左上の角です。
The layout system computes the VisualElement.layout
property (type Rect
) for each element, which includes the final position of the element. This takes the relative or absolute position of the element into account.
layout.position
は親の座標空間に相対的に、ポイントで表されます。
各 VisualElement
には、要素の位置と回転に追加のローカルオフセットを加えるために使用するトランスフォームプロパティ (ITransform
) があります。このオフセットは、計算されたレイアウトプロパティでは示されません。デフォルトでは、transform
は同一です。
Use the worldBound
property to retrieve the final window space coordinates of the VisualElement
, taking into account both the layout position and the transform. This position includes the height of the header of the window.
VisualElement.layout.position
と VisualElement.layout.transform
プロパティはローカル座標系と親座標系間の変換方法を定義します。
The VisualElementExtensions
static class provides the following extension methods that transform points and rectangles between coordinate systems:
WorldToLocal
は、Panel
空間の Vector2
または Rect
を要素内の参照に変換します。LocalToWorld
は Vector2
または Rect
を Panel
空間参照に変換します。ChangeCoordinatesTo
は要素のローカル空間の Vector2
または Rect
を別の要素のローカル空間に変換します。