StyleBox
Ресурс оформления с отдельными отступами содержимого и рисунком.
StyleBox — ресурс, не Control и не контейнер. Назначайте его в подходящий theme-слот элемента, например panel у PanelContainer или normal у Button. Одно значение ресурса может использоваться несколькими элементами; изменение общего StyleBox затронет всех потребителей. Для индивидуального оформления создайте копию.
ContentMarginLeft/Top/Right/Bottom по умолчанию -1. Отрицательное значение означает автоматическое поле производного стиля, а не отрицательный отступ. GetContentMargin возвращает сохранённое число; GetMargin — рассчитанное. Например, у StyleBoxTexture поле -1 может дать фактический отступ 4 из TextureMargin. Явный 0 отключает автоматический отступ этой стороны.
GetMinimumSize суммирует рассчитанные поля противоположных сторон и покомпонентно учитывает _GetMinimumSize собственного скрипта. GetOffset возвращает только левое/верхнее рассчитанные поля. Минимум стиля не обязательно равен полному минимуму Control: туда дополнительно входят текст, иконка и собственные ограничения.
Рисунок и поля различаются. Текстурный ExpandMargin расширяет рисунок, не резервируя место; StyleBoxEmpty может добавлять поля, не рисуя ничего. Настраивайте поля состояний кнопки согласованно, чтобы переходы hover/pressed не создавали неожиданный размер. Setter поля может испускать Changed даже при повторной записи того же числа.
Для собственного StyleBox реализуйте _Draw с переданным RID и прямоугольником. Обычно стиль вызывается через CanvasItem.DrawStyleBox во время _Draw элемента. GetCurrentItemDrawn возвращает текущий CanvasItem только в контексте рисования; вне его возможен null. Это общая ссылка, не объект для освобождения. _GetDrawRect описывает область рисунка, а _TestMask — отдельную проверку точки; callbacks не следует вызывать вместо обычных getters готового стиля.
TestMask без собственного callback возвращает true даже вне rect. Он сам не проверяет границы Control и не делает прозрачные пиксели текстуры некликабельными. Для фигурной TextureButton задайте её Bitmap-маску отдельно.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
StyleBoxКонструктор
public StyleBox();Создаёт базовый ресурс с ContentMargin = -1 со всех сторон. Сам не предоставляет рисунок: используйте готовый стиль либо реализуйте _Draw в подклассе.
Свойства4
ContentMarginBottomСвойство
public float ContentMarginBottom { get; set; }Сохранённое поле Bottom: -1 по умолчанию означает автоматическое значение производного стиля. 0 — явный нулевой отступ. GetMargin возвращает рассчитанное значение.
ContentMarginLeftСвойство
public float ContentMarginLeft { get; set; }Сохранённое поле Left: -1 по умолчанию означает автоматическое значение производного стиля. 0 — явный нулевой отступ. GetMargin возвращает рассчитанное значение.
ContentMarginRightСвойство
public float ContentMarginRight { get; set; }Сохранённое поле Right: -1 по умолчанию означает автоматическое значение производного стиля. 0 — явный нулевой отступ. GetMargin возвращает рассчитанное значение.
ContentMarginTopСвойство
public float ContentMarginTop { get; set; }Сохранённое поле Top: -1 по умолчанию означает автоматическое значение производного стиля. 0 — явный нулевой отступ. GetMargin возвращает рассчитанное значение.
Методы13
Drawvoid
public void Draw(Rid canvasItem, Rect2 rect);Рисует стиль в переданный canvas-item RID и Rect2. Обычно используйте CanvasItem.DrawStyleBox из _Draw элемента. RID должен принадлежать живому объекту рисования. Не размещает дочерние Control.
| Имя | Тип | По умолчанию |
|---|---|---|
canvasItem | Rid | — |
rect | Rect2 | — |
canvasItemRID живого canvas-item, принимающего команды рисунка.
rectПрямоугольник стиля в координатах получателя рисунка.
GetContentMarginfloat
public float GetContentMargin(Side margin);Возвращает сохранённое поле, включая отрицательное автоматическое значение. Для рассчитанного отступа используйте GetMargin.
| Имя | Тип | По умолчанию |
|---|---|---|
margin | Side | — |
marginСторона Side.Left, Top, Right или Bottom.
floatСохранённое поле, включая отрицательное auto.
GetCurrentItemDrawnCanvasItem
public CanvasItem GetCurrentItemDrawn();Возвращает текущий CanvasItem контекста рисования либо null вне него. Общий объект не следует освобождать. Это не владелец ресурса StyleBox.
CanvasItemОбщий текущий CanvasItem либо null.
GetMarginfloat
public float GetMargin(Side margin);Возвращает рассчитанное поле: отрицательное ContentMargin заменяется полем производного стиля. Явный 0 остаётся нулём.
| Имя | Тип | По умолчанию |
|---|---|---|
margin | Side | — |
marginСторона Side.Left, Top, Right или Bottom.
floatРассчитанное поле выбранной стороны в пикселях.
GetMinimumSizeVector2
public Vector2 GetMinimumSize();Возвращает суммы рассчитанных полей по осям с покомпонентным максимумом собственного _GetMinimumSize. Это минимум стиля, не полного Control.
Vector2Vector2 минимума стиля из полей и custom-callback.
GetOffsetVector2
public Vector2 GetOffset();Возвращает рассчитанные левое/верхнее поля. Не учитывает декоративный ExpandMargin и не является глобальной позицией.
Vector2Рассчитанные поля (Left, Top).
SetContentMarginvoid
public void SetContentMargin(Side margin, float offset);Сохраняет поле стороны и испускает Changed, даже при той же величине. Отрицательное означает автоматическое поле производного стиля; неотрицательное — явное.
| Имя | Тип | По умолчанию |
|---|---|---|
margin | Side | — |
offset | float | — |
marginСторона Side.Left, Top, Right или Bottom.
offsetСохраняет поле стороны и испускает Changed, даже при той же величине. Отрицательное означает автоматическое поле производного стиля; неотрицательное — явное.
SetContentMarginAllvoid
public void SetContentMarginAll(float offset);Устанавливает одинаковое поле всем четырём сторонам, испуская Changed один раз. Отрицательное включает автоматические поля, 0 задаёт явные нули.
| Имя | Тип | По умолчанию |
|---|---|---|
offset | float | — |
offsetУстанавливает одинаковое поле всем четырём сторонам, испуская Changed один раз. Отрицательное включает автоматические поля, 0 задаёт явные нули.
TestMaskbool
public bool TestMask(Vector2 point, Rect2 rect);Вызывает собственную проверку _TestMask, а без неё возвращает true даже вне rect. Сам не обрезает по прямоугольнику и не проверяет альфу текстуры.
| Имя | Тип | По умолчанию |
|---|---|---|
point | Vector2 | — |
rect | Rect2 | — |
pointПроверяемая точка в той же системе координат, что rect.
rectПрямоугольник стиля в координатах получателя рисунка.
boolРезультат callback либо true без него; не автоматическая проверка rect.
_Drawvoid
public virtual void _Draw(Rid toCanvasItem, Rect2 rect);Callback рисования собственного StyleBox в переданный RID/Rect2. Реализуйте рисунок в подклассе; это не обычный getter и не сигнал.
| Имя | Тип | По умолчанию |
|---|---|---|
toCanvasItem | Rid | — |
rect | Rect2 | — |
toCanvasItemRID живого canvas-item, принимающего команды рисунка.
rectПрямоугольник стиля в координатах получателя рисунка.
_GetDrawRectRect2
public virtual Rect2 _GetDrawRect(Rect2 rect);Callback области рисунка собственного стиля, например с декоративным выходом за исходный rect. Не заменяет _Draw и не меняет поля содержимого. Не используйте как getter готового C++ стиля.
| Имя | Тип | По умолчанию |
|---|---|---|
rect | Rect2 | — |
rectПрямоугольник стиля в координатах получателя рисунка.
Rect2Область рисунка, указанная собственным стилем.
_GetMinimumSizeVector2
public virtual Vector2 _GetMinimumSize();Callback дополнительной нижней границы минимума собственного стиля. Результат покомпонентно объединяется с суммами полей, не заменяет их меньшими значениями.
Vector2Дополнительная нижняя граница минимума.
_TestMaskbool
public virtual bool _TestMask(Vector2 point, Rect2 rect);Callback собственной проверки точки относительно переданного rect. Реализуйте проверку границ явно; базовый StyleBox без callback принимает любую точку.
| Имя | Тип | По умолчанию |
|---|---|---|
point | Vector2 | — |
rect | Rect2 | — |
pointПроверяемая точка в той же системе координат, что rect.
rectПрямоугольник стиля в координатах получателя рисунка.
boolРезультат собственной проверки точки.