DpiTexture
SVG-текстура для масштабируемого интерфейса.
DpiTexture хранит SVG и создаёт растровые варианты для масштабируемого интерфейса. Это ресурс для иконок и других векторных элементов, а не универсальный SVG-документ с браузерным API. BaseScale определяет базовое разрешение; SetSizeOverride меняет только логический размер. При рисовании могут использоваться варианты для oversampling текущего CanvasItem.
Палитру изменяйте через копию: Duplicate словаря до изменения, затем SetColorMap с изменённой копией. Изменение разделяемого ColorMap на месте не обновляет внутреннюю палитру. PremultAlpha требует согласованного режима смешивания материала. Для плагинов см. подготовку и импорт SVG.
Источник, масштаб, палитра и флаги сохраняются вместе с ресурсом; логический size override не сохраняется. Проверены ресурсные операции и пиксели в Windows Forward+/Vulkan. Рисование при разных уровнях oversampling, ручная смена DPI/темы и визуальная оценка краёв здесь не подтверждены.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
DpiTextureКонструктор
public DpiTexture();Создаёт пустой ресурс: источник пуст, BaseScale и Saturation равны 1, флаги выключены, палитра пуста. До запроса размеров, изображения или RID задайте корректный SVG через SetSource. Конструктор сам по себе не создаёт готовую иконку.
Свойства6
BaseScaleСвойство
public float BaseScale { get; set; }Базовый множитель растеризации SVG; по умолчанию 1. Значение 2 даёт вдвое больше пикселей по каждой оси и меняет естественный размер текстуры. Передавайте положительное конечное значение. Подсказка инспектора 0.01…10 не ограничивает setter этим диапазоном. Изменение сбрасывает кэш.
ColorMapСвойство
public Reckfell.Collections.Dictionary ColorMap { get; set; }Словарь замен Color → Color; по умолчанию пуст. Не изменяйте полученный словарь на месте: сохранённое содержимое может измениться без обновления внутренней палитры и изображения. Сначала Duplicate словаря, затем изменение копии и назначение обратно. Setter пропускает словари с равным содержимым. Это не автоматическая тема редактора.
FixAlphaBorderСвойство
public bool FixAlphaBorder { get; set; }По умолчанию false. Перед загрузкой в GPU исправляет RGB прозрачных краевых пикселей соседними цветами. Может уменьшать тёмную кайму при фильтрации; не добавляет непрозрачную обводку и не гарантирует исправление любого изображения. Изменение сбрасывает кэш.
PremultAlphaСвойство
public bool PremultAlpha { get; set; }По умолчанию false. При растеризации умножает RGB на альфу, сохраняя саму альфу. Нужен согласованный режим смешивания: например, CanvasItemMaterial.BlendModeEnum.PremultAlpha или blend_premul_alpha в canvas_item-шейдере. Это преобразование данных, а не включение прозрачности на материале.
SaturationСвойство
public float Saturation { get; set; }Множитель насыщенности; по умолчанию 1, значение 0 даёт оттенки серого. Setter не ограничивает значение диапазоном подсказки инспектора 0…1. Для обычного интерфейса используйте конечные значения 0…1. Изменение сбрасывает кэш изображения.
_SourceСвойство
public string _Source { get; set; }Внутреннее сохраняемое свойство исходного SVG, связанное с SetSource/GetSource. В обычном коде используйте эти методы. Содержит текст, не URI; изменение вызывает тот же сброс кэша. Это не второй отдельный источник изображения.
Методы15
CreateFromStringDpiTexture
public static DpiTexture CreateFromString(string source, float scale = 1f, float saturation = 1f, Reckfell.Collections.Dictionary colorMap = null);Создаёт отдельный DpiTexture и задаёт SVG, масштаб, насыщенность и палитру. Это не проверка синтаксиса SVG: растеризация выполняется лениво при запросе изображения, размеров или RID. Фабрика не возвращает Error. Передавайте корректный SVG и положительный конечный scale.
| Имя | Тип | По умолчанию |
|---|---|---|
source | string | — |
scale | float | 1f |
saturation | float | 1f |
colorMap | Reckfell.Collections.Dictionary | null |
sourceКорректный текст SVG, не путь к файлу.
scaleПоложительный конечный базовый масштаб; по умолчанию 1.
saturationКонечный множитель насыщенности; по умолчанию 1.
colorMapНеобязательный словарь Color → Color; null использует пустой. Не изменяйте разделяемый словарь после назначения.
DpiTextureНовый ресурс; вызывающий код владеет своей ссылкой. Создание не доказывает корректность SVG.
GetBaseScalefloat
public float GetBaseScale();Возвращает BaseScale. Базовый множитель растеризации SVG; по умолчанию 1. Значение 2 даёт вдвое больше пикселей по каждой оси и меняет естественный размер текстуры. Передавайте положительное конечное значение. Подсказка инспектора 0.01…10 не ограничивает setter этим диапазоном. Изменение сбрасывает кэш.
floatТекущий базовый множитель; по умолчанию 1.
GetColorMapReckfell.Collections.Dictionary
public Reckfell.Collections.Dictionary GetColorMap();Возвращает ColorMap. Словарь замен Color → Color; по умолчанию пуст. Не изменяйте полученный словарь на месте: сохранённое содержимое может измениться без обновления внутренней палитры и изображения. Сначала Duplicate словаря, затем изменение копии и назначение обратно. Setter пропускает словари с равным содержимым. Это не автоматическая тема редактора.
Reckfell.Collections.DictionaryРазделяемый словарь замен; копируйте до изменения.
GetFixAlphaBorderbool
public bool GetFixAlphaBorder();Возвращает FixAlphaBorder. По умолчанию false. Перед загрузкой в GPU исправляет RGB прозрачных краевых пикселей соседними цветами. Может уменьшать тёмную кайму при фильтрации; не добавляет непрозрачную обводку и не гарантирует исправление любого изображения. Изменение сбрасывает кэш.
boolТекущее состояние исправления альфа-границ.
GetPremultAlphabool
public bool GetPremultAlpha();Возвращает PremultAlpha. По умолчанию false. При растеризации умножает RGB на альфу, сохраняя саму альфу. Нужен согласованный режим смешивания: например, CanvasItemMaterial.BlendModeEnum.PremultAlpha или blend_premul_alpha в canvas_item-шейдере. Это преобразование данных, а не включение прозрачности на материале.
boolТекущее состояние умножения RGB на альфу.
GetSaturationfloat
public float GetSaturation();Возвращает Saturation. Множитель насыщенности; по умолчанию 1, значение 0 даёт оттенки серого. Setter не ограничивает значение диапазоном подсказки инспектора 0…1. Для обычного интерфейса используйте конечные значения 0…1. Изменение сбрасывает кэш изображения.
floatТекущий множитель насыщенности; по умолчанию 1.
GetScaledRidRid
public Rid GetScaledRid();Возвращает RID варианта для oversampling текущего рисуемого CanvasItem. Вне рисования при oversampling = 0 используется базовый масштаб 1. Дескриптор принадлежит ресурсу: не освобождайте его вручную и не считайте стабильным после изменения текстуры. Метод не задаёт масштаб окна или редактора.
RidЗаимствованный RID текущего варианта, либо базовый RID вне рисования.
GetSourcestring
public string GetSource();Возвращает сохранённый текст SVG, а не путь к файлу или растровые пиксели. Чтение строки не подтверждает успешную растеризацию.
stringСохранённая строка SVG; у нового ресурса может быть пустой.
SetBaseScalevoid
public void SetBaseScale(float baseScale);Задаёт BaseScale. Базовый множитель растеризации SVG; по умолчанию 1. Значение 2 даёт вдвое больше пикселей по каждой оси и меняет естественный размер текстуры. Передавайте положительное конечное значение. Подсказка инспектора 0.01…10 не ограничивает setter этим диапазоном. Изменение сбрасывает кэш.
| Имя | Тип | По умолчанию |
|---|---|---|
baseScale | float | — |
baseScaleПоложительный конечный множитель растеризации.
SetColorMapvoid
public void SetColorMap(Reckfell.Collections.Dictionary colorMap);Задаёт ColorMap. Словарь замен Color → Color; по умолчанию пуст. Не изменяйте полученный словарь на месте: сохранённое содержимое может измениться без обновления внутренней палитры и изображения. Сначала Duplicate словаря, затем изменение копии и назначение обратно. Setter пропускает словари с равным содержимым. Это не автоматическая тема редактора.
| Имя | Тип | По умолчанию |
|---|---|---|
colorMap | Reckfell.Collections.Dictionary | — |
colorMapСловарь Color → Color; изменяйте отдельную копию до назначения.
SetFixAlphaBordervoid
public void SetFixAlphaBorder(bool fixAlphaBorder);Задаёт FixAlphaBorder. По умолчанию false. Перед загрузкой в GPU исправляет RGB прозрачных краевых пикселей соседними цветами. Может уменьшать тёмную кайму при фильтрации; не добавляет непрозрачную обводку и не гарантирует исправление любого изображения. Изменение сбрасывает кэш.
| Имя | Тип | По умолчанию |
|---|---|---|
fixAlphaBorder | bool | — |
fixAlphaBorderВключить исправление RGB у прозрачных краёв.
SetPremultAlphavoid
public void SetPremultAlpha(bool premultAlpha);Задаёт PremultAlpha. По умолчанию false. При растеризации умножает RGB на альфу, сохраняя саму альфу. Нужен согласованный режим смешивания: например, CanvasItemMaterial.BlendModeEnum.PremultAlpha или blend_premul_alpha в canvas_item-шейдере. Это преобразование данных, а не включение прозрачности на материале.
| Имя | Тип | По умолчанию |
|---|---|---|
premultAlpha | bool | — |
premultAlphaУмножать RGB на альфу при растеризации.
SetSaturationvoid
public void SetSaturation(float saturation);Задаёт Saturation. Множитель насыщенности; по умолчанию 1, значение 0 даёт оттенки серого. Setter не ограничивает значение диапазоном подсказки инспектора 0…1. Для обычного интерфейса используйте конечные значения 0…1. Изменение сбрасывает кэш изображения.
| Имя | Тип | По умолчанию |
|---|---|---|
saturation | float | — |
saturationКонечный множитель; для обычного UI используйте 0…1.
SetSizeOverridevoid
public void SetSizeOverride(Vector2I size);Задаёт логический размер без повторной растеризации SVG. При BaseScale = 2 SVG 16×16 даёт изображение 32×32; override 48×24 меняет GetWidth/GetHeight на 48×24, но GetImage остаётся 32×32. Ноль восстанавливает естественный размер соответствующей оси; Vector2I.Zero снимает override. Передавайте неотрицательные компоненты. Override не сохраняется как свойство ресурса. Для увеличения разрешения используйте BaseScale.
| Имя | Тип | По умолчанию |
|---|---|---|
size | Vector2I | — |
sizeНеотрицательные логические размеры; 0 восстанавливает естественный размер этой оси.
SetSourcevoid
public void SetSource(string source);Заменяет исходный SVG и сбрасывает кэши изображения, RID и проверки альфы; одинаковая строка не вызывает обновление. Передавайте текст SVG, не asset://-путь. Этот void-метод не возвращает ошибку синтаксиса: она может проявиться при последующей растеризации.
| Имя | Тип | По умолчанию |
|---|---|---|
source | string | — |
sourceИсходный текст корректного SVG.