NinePatchRect
Растягиваемая текстурная рамка с сохраняемыми краями.
NinePatchRect делит текстуру на девять областей по четырём PatchMargin: углы сохраняют локальные размеры, края и середина растягиваются или повторяются по AxisStretchHorizontal/Vertical. Используйте для декоративной рамки, если обычное растяжение TextureRect искажает углы.
Назначьте Texture, задайте неотрицательные толщины левого, правого, верхнего и нижнего края, затем размер Control. Margins измеряются в пикселях исходной области; их суммы должны помещаться в ней. Для повторяемой середины оставьте ей положительную ширину/высоту. Setter проверяет Side, но не ограничивает само значение margin: валидируйте внешние данные.
Встроенный минимальный размер равен (Left + Right, Top + Bottom), даже без Texture. Например, края 8/12 по горизонтали и 6/10 по вертикали дают минимум 20 × 16. CustomMinimumSize может увеличить его. PatchMargin — границы нарезки, не отступы содержимого: NinePatchRect не является Container и не размещает детей автоматически. Для раскладки добавьте подходящий контейнер; для панели с theme-ресурсом рассмотрите PanelContainer.
RegionRect выбирает исходную область в пикселях, а не UV 0…1. Нулевой Rect2 использует всю текстуру. Stretch растягивает область; Tile повторяет с возможным неполным последним фрагментом; TileFit подгоняет масштаб повторений, чтобы поместить целое число. Эти правила задаются отдельно для каждой оси. DrawCenter = false убирает только рисование середины, не меняет минимум и не создаёт область для дочернего содержимого.
TextureChanged испускается при замене ссылки Texture, включая очистку в null; повторное присваивание того же ресурса его не вызывает. Изменение самого ресурса обновляет перерисовку, но не испускает этот сигнал NinePatchRect. Texture остаётся общей ссылкой. MouseFilter по умолчанию Ignore, поэтому декоративная рамка не перехватывает мышь.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
NinePatchRectКонструктор
public NinePatchRect();Создаёт декоративную рамку без текстуры: края 0, DrawCenter = true, оба режима осей Stretch, RegionRect нулевой, MouseFilter = Ignore.
Свойства9
AxisStretchHorizontalСвойство
public NinePatchRect.AxisStretchMode AxisStretchHorizontal { get; set; }Режим внутренних областей по горизонтали: Stretch растягивает, Tile повторяет, TileFit подгоняет целое число повторений. Stretch по умолчанию. Не изменяет минимум из PatchMargin.
AxisStretchVerticalСвойство
public NinePatchRect.AxisStretchMode AxisStretchVertical { get; set; }Режим внутренних областей по вертикали: Stretch, Tile или TileFit. Настраивается независимо от горизонтального; толщина верхнего/нижнего края задаётся PatchMargin.
DrawCenterСвойство
public bool DrawCenter { get; set; }Рисовать центральную область, true по умолчанию. false оставляет рамку и сохраняет прежний минимум. Не управляет детьми, раскладкой или попаданием мыши.
PatchMarginBottomСвойство
public int PatchMarginBottom { get; set; }Толщина нижнего края в пикселях исходной области, 0 по умолчанию. Участвует в сумме минимального размера, но не задаёт отступ содержимого. Используйте неотрицательное значение, помещающееся в область.
PatchMarginLeftСвойство
public int PatchMarginLeft { get; set; }Толщина левого края в пикселях исходной области, 0 по умолчанию. Участвует в сумме минимального размера, но не задаёт отступ содержимого. Используйте неотрицательное значение, помещающееся в область.
PatchMarginRightСвойство
public int PatchMarginRight { get; set; }Толщина правого края в пикселях исходной области, 0 по умолчанию. Участвует в сумме минимального размера, но не задаёт отступ содержимого. Используйте неотрицательное значение, помещающееся в область.
PatchMarginTopСвойство
public int PatchMarginTop { get; set; }Толщина верхнего края в пикселях исходной области, 0 по умолчанию. Участвует в сумме минимального размера, но не задаёт отступ содержимого. Используйте неотрицательное значение, помещающееся в область.
RegionRectСвойство
public Rect2 RegionRect { get; set; }Исходная область в пикселях текстуры, не нормализованные UV. Нулевой Rect2 означает всю текстуру. Не меняет PatchMargin или минимум Control; задавайте область, в которую помещаются все края.
TextureСвойство
public Texture2D Texture { get; set; }Общая Texture2D для нарезки. Замена ссылки, включая null, вызывает TextureChanged; повторное присваивание той же ссылки — нет. Размер минимума определяется краями, не размером текстуры.
Методы12
GetHAxisStretchModeNinePatchRect.AxisStretchMode
public NinePatchRect.AxisStretchMode GetHAxisStretchMode();Режим внутренних областей по горизонтали: Stretch растягивает, Tile повторяет, TileFit подгоняет целое число повторений. Stretch по умолчанию. Не изменяет минимум из PatchMargin.
NinePatchRect.AxisStretchModeТекущее сохранённое значение настройки.
GetPatchMarginint
public int GetPatchMargin(Side margin);Возвращает толщину выбранного края в пикселях исходной области. Это граница нарезки, не отступ дочернего содержимого.
| Имя | Тип | По умолчанию |
|---|---|---|
margin | Side | — |
marginВыбранная сторона Side.Left, Top, Right или Bottom.
intТекущее сохранённое значение настройки.
GetRegionRectRect2
public Rect2 GetRegionRect();Исходная область в пикселях текстуры, не нормализованные UV. Нулевой Rect2 означает всю текстуру. Не меняет PatchMargin или минимум Control; задавайте область, в которую помещаются все края.
Rect2Текущее сохранённое значение настройки.
GetTextureTexture2D
public Texture2D GetTexture();Общая Texture2D для нарезки. Замена ссылки, включая null, вызывает TextureChanged; повторное присваивание той же ссылки — нет. Размер минимума определяется краями, не размером текстуры.
Texture2DТекущая общая ссылка Texture2D либо null.
GetVAxisStretchModeNinePatchRect.AxisStretchMode
public NinePatchRect.AxisStretchMode GetVAxisStretchMode();Режим внутренних областей по вертикали: Stretch, Tile или TileFit. Настраивается независимо от горизонтального; толщина верхнего/нижнего края задаётся PatchMargin.
NinePatchRect.AxisStretchModeТекущее сохранённое значение настройки.
IsDrawCenterEnabledbool
public bool IsDrawCenterEnabled();Рисовать центральную область, true по умолчанию. false оставляет рамку и сохраняет прежний минимум. Не управляет детьми, раскладкой или попаданием мыши.
boolТекущее сохранённое значение настройки.
SetDrawCentervoid
public void SetDrawCenter(bool drawCenter);Рисовать центральную область, true по умолчанию. false оставляет рамку и сохраняет прежний минимум. Не управляет детьми, раскладкой или попаданием мыши.
| Имя | Тип | По умолчанию |
|---|---|---|
drawCenter | bool | — |
drawCenterРисовать центральную область, true по умолчанию. false оставляет рамку и сохраняет прежний минимум. Не управляет детьми, раскладкой или попаданием мыши.
SetHAxisStretchModevoid
public void SetHAxisStretchMode(NinePatchRect.AxisStretchMode mode);Режим внутренних областей по горизонтали: Stretch растягивает, Tile повторяет, TileFit подгоняет целое число повторений. Stretch по умолчанию. Не изменяет минимум из PatchMargin.
| Имя | Тип | По умолчанию |
|---|---|---|
mode | NinePatchRect.AxisStretchMode | — |
modeРежим внутренних областей по горизонтали: Stretch растягивает, Tile повторяет, TileFit подгоняет целое число повторений. Stretch по умолчанию. Не изменяет минимум из PatchMargin.
SetPatchMarginvoid
public void SetPatchMargin(Side margin, int value);Задаёт толщину выбранного края в пикселях и обновляет минимум. Side должен быть допустимым; отрицательные и чрезмерные размеры не отсекаются автоматически. Держите суммы краёв в пределах исходной области.
| Имя | Тип | По умолчанию |
|---|---|---|
margin | Side | — |
value | int | — |
marginВыбранная сторона Side.Left, Top, Right или Bottom.
valueНеотрицательная толщина края в пикселях исходной области; проверьте сумму противоположных краёв.
SetRegionRectvoid
public void SetRegionRect(Rect2 rect);Исходная область в пикселях текстуры, не нормализованные UV. Нулевой Rect2 означает всю текстуру. Не меняет PatchMargin или минимум Control; задавайте область, в которую помещаются все края.
| Имя | Тип | По умолчанию |
|---|---|---|
rect | Rect2 | — |
rectИсходная область в пикселях текстуры, не нормализованные UV. Нулевой Rect2 означает всю текстуру. Не меняет PatchMargin или минимум Control; задавайте область, в которую помещаются все края.
SetTexturevoid
public void SetTexture(Texture2D texture);Общая Texture2D для нарезки. Замена ссылки, включая null, вызывает TextureChanged; повторное присваивание той же ссылки — нет. Размер минимума определяется краями, не размером текстуры.
| Имя | Тип | По умолчанию |
|---|---|---|
texture | Texture2D | — |
textureОбщая Texture2D либо null для очистки рисунка.
SetVAxisStretchModevoid
public void SetVAxisStretchMode(NinePatchRect.AxisStretchMode mode);Режим внутренних областей по вертикали: Stretch, Tile или TileFit. Настраивается независимо от горизонтального; толщина верхнего/нижнего края задаётся PatchMargin.
| Имя | Тип | По умолчанию |
|---|---|---|
mode | NinePatchRect.AxisStretchMode | — |
modeРежим внутренних областей по вертикали: Stretch, Tile или TileFit. Настраивается независимо от горизонтального; толщина верхнего/нижнего края задаётся PatchMargin.
Сигналы и события1
TextureChangedСобытие
public event Action TextureChanged;Заменилась ссылка Texture, включая null. Не испускается при повторном присваивании того же ресурса или при его внутреннем Changed. Для изменений ресурса наблюдайте его собственный сигнал.
NinePatchRect.AxisStretchMode
| Значение | Описание |
|---|---|
Stretch = 0 | Растягивает центральную текстуру по NinePatchRect. Это может привести к искажению текстуры. |
Tile = 1 | Повторяет центральную текстуру по NinePatchRect. Это не вызовет видимых искажений. Текстура должна быть бесшовной, чтобы это работало без отображения артефактов между краями. |
TileFit = 2 | Повторяет центральную текстуру по NinePatchRect, но также растягивает текстуру, чтобы убедиться, что каждый тайл виден полностью. Это может привести к искажению текстуры, но меньше, чем |