Преглед на файлове

Merge pull request #2440 from mitchcurtis/centre

Add a section to size_and_anchors for centering a control in its parent
Max Hilbrunner преди 6 години
родител
ревизия
993291cf0a
променени са 1 файла, в които са добавени 26 реда и са изтрити 1 реда
  1. 26 1
      tutorials/gui/size_and_anchors.rst

+ 26 - 1
tutorials/gui/size_and_anchors.rst

@@ -1,7 +1,7 @@
 .. _doc_size_and_anchors:
 
 Size and anchors
-----------------
+================
 
 If a game was always going to be run on the same device and at the same
 resolution, positioning controls would be a simple matter of setting the
@@ -38,3 +38,28 @@ it, leaving a 20 pixel margin:
 
 .. image:: img/marginaround.png
 
+Centering a control
+-------------------
+
+To center a control in its parent, set its anchors to 0.5 and each margin
+to half of its relevant dimension. For example, the code below shows how
+a TextureRect can be centered in its parent:
+
+::
+
+    var rect = TextureRect.new()
+    rect.texture = load("res://icon.png")
+    rect.anchor_left = 0.5
+    rect.anchor_right = 0.5
+    rect.anchor_top = 0.5
+    rect.anchor_bottom = 0.5
+    var texture_size = rect.texture.get_size()
+    rect.margin_left = -texture_size.x / 2
+    rect.margin_right = -texture_size.x / 2
+    rect.margin_top = -texture_size.y / 2
+    rect.margin_bottom = -texture_size.y / 2
+    add_child(rect)
+
+Setting each anchor to 0.5 moves the reference point for the margins to
+the center of its parent. From there, we set negative margins so that
+the control gets its natural size.