TextureButton
Кнопка с отдельными текстурами состояний и маской клика.
TextureButton наследует Press, Pressed, ToggleMode и ButtonGroup от BaseButton, но рисует назначенные текстуры вместо темы обычного Button. Задайте TextureNormal; при необходимости добавьте TexturePressed, TextureHover, TextureDisabled и TextureFocused. Желательно использовать одинаковые размеры и совмещение всех состояний, особенно с маской клика.
По умолчанию StretchMode = Keep: текстура рисуется в исходном размере. Изменение Size само не растягивает её. Для масштабируемой кнопки задайте IgnoreTextureSize = true и подходящий StretchMode: Scale растягивает по осям, KeepAspectCentered вписывает и центрирует, KeepAspectCovered заполняет с центральным обрезанием. IgnoreTextureSize убирает встроенный минимум, но сохраняет CustomMinimumSize и ограничения родителя.
При IgnoreTextureSize = false минимум берётся из первой доступной основы: TextureNormal, иначе TexturePressed, иначе TextureHover, иначе TextureClickMask. Это не максимум размеров всех состояний. TextureDisabled и TextureFocused минимум не задают. Если используется только фокусная текстура, задайте размер явно.
Для нажатого вида при отсутствии TexturePressed используется Hover, затем Normal. Для Disabled без собственной текстуры используется Normal. TextureFocused рисуется поверх текущего состояния при фокусе; это отдельная накладка, не замена обычной текстуры во всех состояниях. Отсутствующая текстура может оставить состояние без рисунка, но не отменяет логику BaseButton.
TextureClickMask — отдельный Bitmap: true разрешает попадание, false исключает. Прозрачность TextureNormal не создаёт маску автоматически. Масштабирование и обрезание используют рассчитанную при рисовании геометрию. В текущей реализации проверка маски не применяет FlipH/FlipV: для асимметричной формы подготовьте зеркальную маску отдельно либо не отражайте изображение.
Текстуры и Bitmap — общие ресурсы. Изменения текстур отслеживаются; изменение уже назначенного Bitmap не подключено к такому же обновлению размеров. После изменения размеров маски явно вызовите UpdateMinimumSize и QueueRedraw либо назначьте новый ресурс. Для текста поверх кнопки используйте отдельный дочерний элемент; TextureButton не предоставляет Text.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
TextureButtonКонструктор
public TextureButton();Создаёт кнопку без текстур и маски: StretchMode = Keep, IgnoreTextureSize = false, отражения выключены. Поведение активации наследуется от BaseButton.
Свойства10
FlipHСвойство
public bool FlipH { get; set; }Отразить рисуемую текстуру по горизонтали, false по умолчанию. Не редактирует ресурс; текущая проверка TextureClickMask не применяет это отражение.
FlipVСвойство
public bool FlipV { get; set; }Отразить рисуемую текстуру по вертикали, false по умолчанию. Не редактирует ресурс; для асимметричной маски клика требуется отдельное соответствие.
IgnoreTextureSizeСвойство
public bool IgnoreTextureSize { get; set; }Игнорировать минимум от основной текстуры/маски, false по умолчанию. Не задаёт способ масштабирования и не отменяет CustomMinimumSize.
StretchModeСвойство
public TextureButton.StretchModeEnum StretchMode { get; set; }Способ отображения, Keep по умолчанию. Scale растягивает, Tile повторяет, Keep/KeepCentered сохраняют размер, KeepAspect-варианты сохраняют пропорции. Для уменьшения ниже исходного минимума отдельно включите IgnoreTextureSize.
TextureClickMaskСвойство
public Bitmap TextureClickMask { get; set; }Общий Bitmap попадания, не Texture2D. true разрешает точку, false исключает; альфа изображения автоматически не используется. В текущем hit-test FlipH/FlipV не отражают маску. Изменение её размеров требует явного обновления минимума/перерисовки.
TextureDisabledСвойство
public Texture2D TextureDisabled { get; set; }Общая Texture2D отключённого состояния либо null. Без неё используется Normal. Не задаёт минимум Control и не включает Disabled сама по себе.
TextureFocusedСвойство
public Texture2D TextureFocused { get; set; }Общая накладка Texture2D для фокуса либо null. Рисуется поверх состояния; при отсутствии остальных может быть единственным изображением. Не задаёт минимум Control.
TextureHoverСвойство
public Texture2D TextureHover { get; set; }Общая Texture2D наведения либо null. Участвует в минимуме только без Normal и Pressed; отсутствие может использовать Normal или выбранное Pressed-состояние.
TextureNormalСвойство
public Texture2D TextureNormal { get; set; }Базовая общая Texture2D либо null. Имеет первый приоритет при расчёте минимума, даже если другие состояния крупнее.
TexturePressedСвойство
public Texture2D TexturePressed { get; set; }Общая Texture2D нажатого состояния либо null. При отсутствии используется Hover, затем Normal. Второй приоритет минимума после Normal.
Методы20
GetClickMaskBitmap
public Bitmap GetClickMask();Общий Bitmap попадания, не Texture2D. true разрешает точку, false исключает; альфа изображения автоматически не используется. В текущем hit-test FlipH/FlipV не отражают маску. Изменение её размеров требует явного обновления минимума/перерисовки.
BitmapОбщий Bitmap либо null.
GetIgnoreTextureSizebool
public bool GetIgnoreTextureSize();Игнорировать минимум от основной текстуры/маски, false по умолчанию. Не задаёт способ масштабирования и не отменяет CustomMinimumSize.
booltrue, если встроенный минимум текстуры игнорируется.
GetStretchModeTextureButton.StretchModeEnum
public TextureButton.StretchModeEnum GetStretchMode();Способ отображения, Keep по умолчанию. Scale растягивает, Tile повторяет, Keep/KeepCentered сохраняют размер, KeepAspect-варианты сохраняют пропорции. Для уменьшения ниже исходного минимума отдельно включите IgnoreTextureSize.
TextureButton.StretchModeEnumВыбранный TextureButton.StretchModeEnum.
GetTextureDisabledTexture2D
public Texture2D GetTextureDisabled();Общая Texture2D отключённого состояния либо null. Без неё используется Normal. Не задаёт минимум Control и не включает Disabled сама по себе.
Texture2DЯвно назначенная общая Texture2D этого состояния либо null; не выбранный fallback.
GetTextureFocusedTexture2D
public Texture2D GetTextureFocused();Общая накладка Texture2D для фокуса либо null. Рисуется поверх состояния; при отсутствии остальных может быть единственным изображением. Не задаёт минимум Control.
Texture2DЯвно назначенная общая Texture2D этого состояния либо null; не выбранный fallback.
GetTextureHoverTexture2D
public Texture2D GetTextureHover();Общая Texture2D наведения либо null. Участвует в минимуме только без Normal и Pressed; отсутствие может использовать Normal или выбранное Pressed-состояние.
Texture2DЯвно назначенная общая Texture2D этого состояния либо null; не выбранный fallback.
GetTextureNormalTexture2D
public Texture2D GetTextureNormal();Базовая общая Texture2D либо null. Имеет первый приоритет при расчёте минимума, даже если другие состояния крупнее.
Texture2DЯвно назначенная общая Texture2D этого состояния либо null; не выбранный fallback.
GetTexturePressedTexture2D
public Texture2D GetTexturePressed();Общая Texture2D нажатого состояния либо null. При отсутствии используется Hover, затем Normal. Второй приоритет минимума после Normal.
Texture2DЯвно назначенная общая Texture2D этого состояния либо null; не выбранный fallback.
IsFlippedHbool
public bool IsFlippedH();Отразить рисуемую текстуру по горизонтали, false по умолчанию. Не редактирует ресурс; текущая проверка TextureClickMask не применяет это отражение.
booltrue для горизонтального отражения рисунка.
IsFlippedVbool
public bool IsFlippedV();Отразить рисуемую текстуру по вертикали, false по умолчанию. Не редактирует ресурс; для асимметричной маски клика требуется отдельное соответствие.
booltrue для вертикального отражения рисунка.
SetClickMaskvoid
public void SetClickMask(Bitmap mask);Общий Bitmap попадания, не Texture2D. true разрешает точку, false исключает; альфа изображения автоматически не используется. В текущем hit-test FlipH/FlipV не отражают маску. Изменение её размеров требует явного обновления минимума/перерисовки.
| Имя | Тип | По умолчанию |
|---|---|---|
mask | Bitmap | — |
maskОбщий Bitmap попадания, не Texture2D. true разрешает точку, false исключает; альфа изображения автоматически не используется. В текущем hit-test FlipH/FlipV не отражают маску. Изменение её размеров требует явного обновления минимума/перерисовки.
SetFlipHvoid
public void SetFlipH(bool enable);Отразить рисуемую текстуру по горизонтали, false по умолчанию. Не редактирует ресурс; текущая проверка TextureClickMask не применяет это отражение.
| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
enableОтразить рисуемую текстуру по горизонтали, false по умолчанию. Не редактирует ресурс; текущая проверка TextureClickMask не применяет это отражение.
SetFlipVvoid
public void SetFlipV(bool enable);Отразить рисуемую текстуру по вертикали, false по умолчанию. Не редактирует ресурс; для асимметричной маски клика требуется отдельное соответствие.
| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
enableОтразить рисуемую текстуру по вертикали, false по умолчанию. Не редактирует ресурс; для асимметричной маски клика требуется отдельное соответствие.
SetIgnoreTextureSizevoid
public void SetIgnoreTextureSize(bool ignore);Игнорировать минимум от основной текстуры/маски, false по умолчанию. Не задаёт способ масштабирования и не отменяет CustomMinimumSize.
| Имя | Тип | По умолчанию |
|---|---|---|
ignore | bool | — |
ignoreИгнорировать минимум от основной текстуры/маски, false по умолчанию. Не задаёт способ масштабирования и не отменяет CustomMinimumSize.
SetStretchModevoid
public void SetStretchMode(TextureButton.StretchModeEnum mode);Способ отображения, Keep по умолчанию. Scale растягивает, Tile повторяет, Keep/KeepCentered сохраняют размер, KeepAspect-варианты сохраняют пропорции. Для уменьшения ниже исходного минимума отдельно включите IgnoreTextureSize.
| Имя | Тип | По умолчанию |
|---|---|---|
mode | TextureButton.StretchModeEnum | — |
modeСпособ отображения, Keep по умолчанию. Scale растягивает, Tile повторяет, Keep/KeepCentered сохраняют размер, KeepAspect-варианты сохраняют пропорции. Для уменьшения ниже исходного минимума отдельно включите IgnoreTextureSize.
SetTextureDisabledvoid
public void SetTextureDisabled(Texture2D texture);Общая Texture2D отключённого состояния либо null. Без неё используется Normal. Не задаёт минимум Control и не включает Disabled сама по себе.
| Имя | Тип | По умолчанию |
|---|---|---|
texture | Texture2D | — |
textureОбщая Texture2D отключённого состояния либо null. Без неё используется Normal. Не задаёт минимум Control и не включает Disabled сама по себе.
SetTextureFocusedvoid
public void SetTextureFocused(Texture2D texture);Общая накладка Texture2D для фокуса либо null. Рисуется поверх состояния; при отсутствии остальных может быть единственным изображением. Не задаёт минимум Control.
| Имя | Тип | По умолчанию |
|---|---|---|
texture | Texture2D | — |
textureОбщая накладка Texture2D для фокуса либо null. Рисуется поверх состояния; при отсутствии остальных может быть единственным изображением. Не задаёт минимум Control.
SetTextureHovervoid
public void SetTextureHover(Texture2D texture);Общая Texture2D наведения либо null. Участвует в минимуме только без Normal и Pressed; отсутствие может использовать Normal или выбранное Pressed-состояние.
| Имя | Тип | По умолчанию |
|---|---|---|
texture | Texture2D | — |
textureОбщая Texture2D наведения либо null. Участвует в минимуме только без Normal и Pressed; отсутствие может использовать Normal или выбранное Pressed-состояние.
SetTextureNormalvoid
public void SetTextureNormal(Texture2D texture);Базовая общая Texture2D либо null. Имеет первый приоритет при расчёте минимума, даже если другие состояния крупнее.
| Имя | Тип | По умолчанию |
|---|---|---|
texture | Texture2D | — |
textureБазовая общая Texture2D либо null. Имеет первый приоритет при расчёте минимума, даже если другие состояния крупнее.
SetTexturePressedvoid
public void SetTexturePressed(Texture2D texture);Общая Texture2D нажатого состояния либо null. При отсутствии используется Hover, затем Normal. Второй приоритет минимума после Normal.
| Имя | Тип | По умолчанию |
|---|---|---|
texture | Texture2D | — |
textureОбщая Texture2D нажатого состояния либо null. При отсутствии используется Hover, затем Normal. Второй приоритет минимума после Normal.
TextureButton.StretchModeEnum
| Значение | Описание |
|---|---|
Keep = 2 | Текстура сохраняет свой исходный размер и располагается в верхнем левом углу ограничивающего прямоугольника. |
KeepAspect = 4 | Масштабируйте текстуру так, чтобы она вписывалась в ограничивающий прямоугольник узла, но сохраняйте пропорции текстуры. |
KeepAspectCentered = 5 | Масштабируйте текстуру так, чтобы она вписывалась в ограничивающий прямоугольник узла, отцентрируйте ее и сохраните пропорции. |
KeepAspectCovered = 6 | Масштабируйте текстуру так, чтобы короткая сторона соответствовала ограничивающему прямоугольнику. Другая сторона обрезалась до границ узла. |
KeepCentered = 3 | Текстура сохраняет свой исходный размер и остается в центре ограничивающего прямоугольника узла. |
Scale = 0 | Масштабируйте так, чтобы он соответствовал ограничивающему прямоугольнику узла. |
Tile = 1 | Размещает в виде плиток, внутри ограничивающего прямоугольника узла. |