Confirmedusers
13,514
edits
Mirotworez (talk | contribs) (Created page with "== Основы графического интерфейса ==") |
Mirotworez (talk | contribs) (Created page with "Это компонент, который создает и управляет вашими элементами графического интерфейса для вас....") |
||
(4 intermediate revisions by the same user not shown) | |||
Line 24: | Line 24: | ||
== Основы графического интерфейса == | == Основы графического интерфейса == | ||
В общем, вы можете создать свою собственную систему графического интерфейса, если хотите, просто переопределив <code>OnRenderGUI</code> и визуализируя все, что вам нравится. Также существует множество переопределяемых методов для обработки ввода с клавиатуры и мыши, см. также класс [https://github.com/anegostudios/vsapi/blob/master/Client/UI/Dialog/GuiDialog.cs GuiDialog] на Github. | |||
Если вы хотите использовать ванильную систему графического интерфейса, ее концепция представляет собой просто плоский или иерархический список элементов графического интерфейса, размещенных в определенных позициях. Позиция определяется экземпляром <code>ElementBounds</code>. Рассмотрим подробнее его свойства: | |||
=== | === Границы Элемента=== | ||
* <code>FixedX</code>/<code>FixedY</code>: | * <code>FixedX</code>/<code>FixedY</code>: абсолютное положение, в котором должен быть размещен элемент. | ||
* <code>FixedWidth</code>/<code>FixedHeight</code>: | * <code>FixedWidth</code>/<code>FixedHeight</code>: абсолютная ширина и высота элемента. | ||
* <code>FixedPaddingX</code>/<code>FixedPaddingY</code>: | * <code>FixedPaddingX</code>/<code>FixedPaddingY</code>: абсолютное внутреннее заполнение элемента. | ||
* <code>FixedMarginX</code>/<code>FixedMarginY</code>: | * <code>FixedMarginX</code>/<code>FixedMarginY</code>: абсолютное внешнее заполнение элемента | ||
* <code>ParentBounds</code>: | * <code>ParentBounds</code>: родительские границы, в которых находится этот элемент. | ||
* <code>ChildBounds</code>: | * <code>ChildBounds</code>: дочерние границы, которые содержит этот элемент. | ||
* <code>Alignment</code>: | * <code>Alignment</code>: Выравнивание элемента. Если установлено значение <code>None</code>, используется фиксированная позиция X/Y. Для любого другого значения значения FixedX/Y игнорируются. Например, когда вы использовали <code>RightTop</code>, элемент всегда будет находиться в правом верхнем углу своих родительских границ. Если вы используете <code>RightFixed</code>, элемент будет выровнен по правому краю, но его Y-позиция определяется <code>FixedY</code> | ||
* <code>HorizontalSizing</code>/<code>VerticalSizing</code>: | * <code>HorizontalSizing</code>/<code>VerticalSizing</code>: используемый метод изменения размера может быть либо <code>Fixed</code> (по умолчанию), <code>Percentual</code>, либо <code>FitToChildren</code> | ||
===GuiComposer=== | ===GuiComposer=== | ||
Это компонент, который создает и управляет вашими элементами графического интерфейса для вас. Вы можете создать композитор через клиентский API: <code>capi.Gui.CreateCompo(dialogName, bounds)</code>. Вы должны предоставить ему уникальный идентификатор и общие границы диалога. Когда у вас есть экземпляр GUIComposer, вы можете последовательно добавлять элементы. Вот небольшой пример: | |||
<syntaxhighlight lang="c#"> | <syntaxhighlight lang="c#"> | ||
private void SetupDialog() | private void SetupDialog() |