Confirmedusers
13,514
edits
Mirotworez (talk | contribs) (Created page with "===Графический интерфейс общего назначения===") |
Mirotworez (talk | contribs) (Created page with "Это компонент, который создает и управляет вашими элементами графического интерфейса для вас....") |
||
(6 intermediate revisions by the same user not shown) | |||
Line 20: | Line 20: | ||
===Графический интерфейс общего назначения=== | ===Графический интерфейс общего назначения=== | ||
Для любого другого использования наследуйте от класса общего назначения <code>GuiDialog</code>, от которого также наследуются HudElement и GuiDialogBlockEntity. Вы можете переопределить <code>ToggleKeyCombinationCode</code> на что-то вроде «yourAweseomeHotkeyCode» и использовать <code>capi.Input.RegisterHotKey</code> + <code>capi.Input.SetHotKeyHandler</code>, чтобы получить собственную клавишу клавиатуры. сопоставляется с открытием/закрытием вашего графического интерфейса (пример: [https://github.com/anegostudios/vsessentialsmod/blob/master/Systems/WorldMap/WorldMapManager.cs#L105 World Map]) | |||
== | == Основы графического интерфейса == | ||
В общем, вы можете создать свою собственную систему графического интерфейса, если хотите, просто переопределив <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() |