reckfellENGINE

Color

RGBA-компоненты float; альфа-канал и цветовая кодировка зависят от использования.

На этой странице
struct ColorReckfellSharpНаследует ValueType

Структура с четырьмя компонентами float: R, G, B и A. Конструктор Color(r, g, b, a) сохраняет компоненты; при пропуске a используется 1. default(Color) имеет четыре нуля, включая A = 0. Компоненты не ограничиваются автоматически диапазоном 0..1: конкретное API определяет, какие значения и цветовое пространство ожидаются.

Сам тип не хранит метку sRGB или linear. Применяйте SrgbToLinear() и LinearToSrgb() только когда знаете кодировку исходных значений и требования получателя.

В C# Color не преобразуется в bool. Если требуется проверить альфа-канал, сравнивайте A явно; это не универсальная проверка видимости объекта. RGB и A остаются отдельными данными.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Конструкторы6

Color6 перегрузок
# Color · 1/6
C#
public Color(Color c, float a = 1f);

Копирует только RGB из c и заменяет альфу значением a. Вызов new Color(c) делает альфу равной 1, даже если c был прозрачным. Для точной копии структуры используйте Color copy = c.

Параметры
ИмяТипПо умолчанию
cColor—
afloat1f
c

Источник RGB; его альфа игнорируется.

a

Альфа без ограничения диапазона; обычно 0…1. По умолчанию 1.

# Color · 2/6
C#
public Color(float r, float g, float b, float a = 1f);

Сохраняет переданные RGBA без ограничения диапазона и преобразования цветового пространства. При отсутствии a альфа равна 1. Это отличается от default(Color), где все четыре компонента равны 0.

Параметры
ИмяТипПо умолчанию
rfloat—
gfloat—
bfloat—
afloat1f
r

Компонента R без ограничения диапазона; обычно 0…1.

g

Компонента G без ограничения диапазона; обычно 0…1.

b

Компонента B без ограничения диапазона; обычно 0…1.

a

Альфа без ограничения диапазона; обычно 0…1. По умолчанию 1.

# Color · 3/6
C#
public Color(string code);

Разбирает корректный HTML-код либо имя из Colors. Регистр имени не важен; пробелы, дефисы, подчёркивания, апострофы и точки в имени удаляются. Неизвестное значение вызывает ArgumentOutOfRangeException. Для ввода пользователя используйте FromString с резервным цветом либо HtmlIsValid перед FromHtml.

Параметры
ИмяТипПо умолчанию
codestring—
code

HTML-код RGB/RGBA из 3, 4, 6 или 8 hex-цифр с необязательным # либо имя из Colors.

# Color · 4/6
C#
public Color(string code, float alpha);

Разбирает code так же, как конструктор Color(string), затем заменяет его альфу значением alpha без ограничения диапазона. Альфа из HTML-кода не умножается, а заменяется. Некорректное значение вызывает ArgumentOutOfRangeException.

Параметры
ИмяТипПо умолчанию
codestring—
alphafloat—
code

HTML-код RGB/RGBA из 3, 4, 6 или 8 hex-цифр с необязательным # либо имя из Colors.

alpha

Новая альфа; заменяет значение из code. Обычно 0…1.

# Color · 5/6
C#
public Color(uint rgba);

Читает целое 0xRRGGBBAA: по 8 бит на канал, R в старших битах, A в младших. Делит каждый канал на 255. Это порядок разрядов числа, а не порядок байтов памяти. 24-битный RGB без альфы сюда не подходит: для красного используйте new Color(0xff0000ffU).

Параметры
ИмяТипПо умолчанию
rgbauint—
rgba

Беззнаковое число 0xRRGGBBAA.

# Color · 6/6
C#
public Color(ulong rgba);

Читает целое 0xRRRRGGGGBBBBAAAA: по 16 бит на канал, R в старших битах, A в младших. Делит каждый канал на 65535. Это порядок разрядов числа, а не порядок байтов памяти. Восстановление через ToRgba64 сохраняет проверенные 16-битные каналы.

Параметры
ИмяТипПо умолчанию
rgbaulong—
rgba

Беззнаковое число 0xRRRRGGGGBBBBAAAA.

Свойства12

A8Свойство
# A8
C#
public int A8 { get; set; }

Чтение: (int)Math.Round(A * 255), середины округляются к чётному. Запись: A = value / 255f. Это int, не byte; ограничения 0…255 нет: запись 510 даёт компоненту 2. Для обычного 8-битного цвета используйте допустимый диапазон и конечные значения.

B8Свойство
# B8
C#
public int B8 { get; set; }

Чтение: (int)Math.Round(B * 255), середины округляются к чётному. Запись: B = value / 255f. Это int, не byte; ограничения 0…255 нет: запись 510 даёт компоненту 2. Для обычного 8-битного цвета используйте допустимый диапазон и конечные значения.

G8Свойство
# G8
C#
public int G8 { get; set; }

Чтение: (int)Math.Round(G * 255), середины округляются к чётному. Запись: G = value / 255f. Это int, не byte; ограничения 0…255 нет: запись 510 даёт компоненту 2. Для обычного 8-битного цвета используйте допустимый диапазон и конечные значения.

HСвойство
# H
C#
public float H { get; set; }

Оттенок HSV в оборотах; для обычного RGB диапазон 0…1. При одинаковых R, G и B возвращает 0: оттенок серого не сохраняется отдельно. Запись пересоздаёт RGB через FromHsv(value, S, V, A), сохраняя альфу. Перед записью нормализуйте отрицательные оттенки.

ItemСвойство
# Item
C#
public float this[int index] { get; set; }

Индексатор RGBA: 0 → R, 1 → G, 2 → B, 3 → A. Чтение и запись вне 0…3 вызывают ArgumentOutOfRangeException. Запись не ограничивает значение канала.

LuminanceСвойство
# Luminance
C#
public float Luminance { get; }

Вычисляет 0.2126 * R + 0.7152 * G + 0.0722 * B, игнорируя альфу. Для относительной яркости входной RGB должен быть линейным; для sRGB используйте color.SrgbToLinear().Luminance. Результат не ограничен 0…1: например, RGB = (2, 2, 2) даёт 2. Сам по себе не является проверкой доступности текста или контраста фона.

OkHslHСвойство
# OkHslH
C#
public float OkHslH { get; set; }

Оттенок OKHSL, вычисляемая из текущего sRGB. Нативное чтение ограничивает результат 0…1, а NaN результата заменяет на 0. Оттенок измеряется в оборотах, не градусах. Запись пересоздаёт RGB через FromOkHsl, сохраняя текущие OkHslS, OkHslL в пределах точности преобразования. При этом весь RGBA ограничивается 0…1: даже запись только OkHslH может изменить ранее выходившую за диапазон альфу. Не используйте для сохранения HDR-диапазона.

OkHslLСвойство
# OkHslL
C#
public float OkHslL { get; set; }

Светлота OKHSL, вычисляемая из текущего sRGB. Нативное чтение ограничивает результат 0…1, а NaN результата заменяет на 0. Запись пересоздаёт RGB через FromOkHsl, сохраняя текущие OkHslH, OkHslS в пределах точности преобразования. При этом весь RGBA ограничивается 0…1: даже запись только OkHslL может изменить ранее выходившую за диапазон альфу. Не используйте для сохранения HDR-диапазона.

OkHslSСвойство
# OkHslS
C#
public float OkHslS { get; set; }

Насыщенность OKHSL, вычисляемая из текущего sRGB. Нативное чтение ограничивает результат 0…1, а NaN результата заменяет на 0. Запись пересоздаёт RGB через FromOkHsl, сохраняя текущие OkHslH, OkHslL в пределах точности преобразования. При этом весь RGBA ограничивается 0…1: даже запись только OkHslS может изменить ранее выходившую за диапазон альфу. Не используйте для сохранения HDR-диапазона.

R8Свойство
# R8
C#
public int R8 { get; set; }

Чтение: (int)Math.Round(R * 255), середины округляются к чётному. Запись: R = value / 255f. Это int, не byte; ограничения 0…255 нет: запись 510 даёт компоненту 2. Для обычного 8-битного цвета используйте допустимый диапазон и конечные значения.

SСвойство
# S
C#
public float S { get; set; }

Насыщенность HSV: (max(R,G,B) − min(R,G,B)) / max(R,G,B), либо 0 при нулевом максимуме. Для RGB в 0…1 обычно 0…1. Запись пересоздаёт RGB через FromHsv(H, value, V, A), сохраняя альфу; значение не ограничивается.

VСвойство
# V
C#
public float V { get; set; }

Значение HSV: max(R, G, B). Не является Luminance и не ограничено 1: RGB = (2, 1, 0) даёт V = 2. Запись пересоздаёт RGB через FromHsv(H, S, value, A), сохраняя альфу; значение не ограничивается.

Методы44

BlendColor
# Blend
C#
public Color Blend(Color over);

Накладывает передний цвет over на текущий цвет-фон с учётом прямой, не предумноженной альфы. Для альфы в 0…1 результат A = Aфон * (1 − Aпередний) + Aпередний; RGB нормируется на итоговую A. При итоговой A = 0 возвращает (0, 0, 0, 0).

Порядок важен: background.Blend(foreground). Метод считает в переданных числах RGB, не переводит sRGB в linear и не ограничивает каналы. Для смешивания sRGB-входов в линейном пространстве:

C#
using Reckfell;

public static class SrgbColorOperations
{
    // Inputs: sRGB RGB values and straight alpha, all finite and in 0..1.
    // Output: sRGB RGB values and straight alpha.
    public static Color Composite(Color background, Color foreground)
    {
        Color backgroundLinear = background.SrgbToLinear();
        Color foregroundLinear = foreground.SrgbToLinear();
        return backgroundLinear.Blend(foregroundLinear).LinearToSrgb();
    }
}
Параметры
ИмяТипПо умолчанию
overColor—
over

Передний слой с прямой альфой; текущий цвет — фон.

Возвращает Color

Новый цвет с прямой альфой; исходные цвета не изменяются.

ClampColor
# Clamp
C#
public Color Clamp(Color? min = default, Color? max = default);

Возвращает копию с ограничением каждой RGBA-компоненты через Mathf.Clamp. По умолчанию min = (0, 0, 0, 0), max = (1, 1, 1, 1). Границы задаются отдельно для каждого канала; min выше max вызывает ArgumentException. Не является тональным отображением HDR и не исправляет NaN.

Параметры
ИмяТипПо умолчанию
minColor?default
maxColor?default
min

Нижние RGBA-границы; null означает четыре нуля.

max

Верхние RGBA-границы; null означает четыре единицы.

Возвращает Color

Копия с ограниченными каналами.

Color8Color
# Color8
C#
public static Color Color8(byte r8, byte g8, byte b8, byte a8 = 255);

Создаёт RGBA из четырёх байтов, деля каждый на 255. Отсутствующий a8 равен 255: цвет непрозрачный. Не выполняет преобразование sRGB/linear.

Параметры
ИмяТипПо умолчанию
r8byte—
g8byte—
b8byte—
a8byte255
r8

Канал R, целое 0…255.

g8

Канал G, целое 0…255.

b8

Канал B, целое 0…255.

a8

Канал A, целое 0…255. По умолчанию 255.

Возвращает Color

Цвет с каналами в диапазоне 0…1.

DarkenedColor
# Darkened
C#
public Color Darkened(float amount);

Затемняет RGB по формуле RGB * (1 − amount), сохраняя A. При amount = 0 цвет прежний; при 1 RGB становится чёрным. amount не ограничивается: значения вне 0…1 дают экстраполяцию. Метод не преобразует цветовое пространство.

Параметры
ИмяТипПо умолчанию
amountfloat—
amount

Доля изменения; обычно 0…1, без автоматического ограничения.

Возвращает Color

Новый цвет с прежней альфой.

Equals2 перегрузки
# Equals · 1/2
C#
public bool Equals(Color other);

Сравнивает все четыре RGBA-компоненты точно, через == для float. Для результата вычислений с допуском используйте IsEqualApprox.

Параметры
ИмяТипПо умолчанию
otherColor—
other

Цвет для сравнения.

Возвращает bool

true при точном равенстве всех четырёх компонент.

# Equals · 2/2
C#
public override bool Equals(object? obj);

Возвращает true, только если obj — упакованная структура Color с точно равными RGBA-компонентами. Для null и объектов других типов возвращает false.

Параметры
ИмяТипПо умолчанию
objobject—
obj

Объект для сравнения; может быть null.

Возвращает bool

Результат проверки типа и точного равенства RGBA.

FromHsvColor
# FromHsv
C#
public static Color FromHsv(float hue, float saturation, float value, float alpha = 1f);

Создаёт RGB из HSV. Оттенок hue измеряется в оборотах, не градусах: 0 — красный, 1/3 — зелёный, 2/3 — синий. При saturation = 0 RGB = (value, value, value). Альфа по умолчанию 1. Значения saturation, value и alpha не ограничиваются.

Передавайте конечный hue в 0…1. Положительные обороты повторяются, но отрицательный hue не нормализуется корректно: например, −0.1 может дать отрицательный RGB-канал. Для интерфейса выбора цвета с градусами и явной политикой S/V/A в 0…1:

C#
using System;
using Reckfell;

public static class PaletteColor
{
    // UI palette policy: hue in degrees; finite S, V and A in 0..1.
    public static bool TryFromHsvDegrees(float degrees, float saturation,
        float value, float alpha, out Color color)
    {
        color = default;
        if (!float.IsFinite(degrees) || !InUnitRange(saturation)
            || !InUnitRange(value) || !InUnitRange(alpha)) return false;
        float hue = degrees / 360f;
        hue -= MathF.Floor(hue);
        color = Color.FromHsv(hue, saturation, value, alpha);
        return true;
    }

    private static bool InUnitRange(float value) =>
        float.IsFinite(value) && value >= 0f && value <= 1f;
}
Параметры
ИмяТипПо умолчанию
huefloat—
saturationfloat—
valuefloat—
alphafloat1f
hue

Оттенок в оборотах; используйте конечное значение 0…1. Для градусов разделите на 360 и нормализуйте.

saturation

Насыщенность; обычно 0…1. При 0 цвет серый. Не ограничивается.

value

Максимальная RGB-компонента HSV; обычно 0…1. Может быть выше 1 для HDR-вычислений. Это не Luminance.

alpha

Альфа без ограничения диапазона; по умолчанию 1.

Возвращает Color

Новый RGB с переданной альфой, без преобразования sRGB/linear.

FromHtmlColor
# FromHtml
C#
public static Color FromHtml(ReadOnlySpan<char> rgba);

Разбирает RGB, RGBA, RRGGBB или RRGGBBAA с необязательным #. Короткие каналы делятся на 15, длинные — на 255; отсутствующая альфа равна 1. Не преобразует цветовое пространство.

Важно: сначала проверяйте HtmlIsValid. Пустой ввод возвращает непрозрачный чёрный, хотя проверку не проходит. Неверная длина вызывает ArgumentOutOfRangeException, но отдельные неверные символы могут пройти разбор: например, 1g0000 принимается текущим C# SDK.

C#
using System;
using Reckfell;

public static class HtmlColorInput
{
    // Exact hexadecimal format only: no names, spaces or CSS functions.
    public static bool TryParse(ReadOnlySpan<char> text, out Color color)
    {
        color = default;
        if (!Color.HtmlIsValid(text)) return false;
        color = Color.FromHtml(text);
        return true;
    }
}
Параметры
ИмяТипПо умолчанию
rgbaReadOnlySpan<char>—
rgba

Hex-код; для пользовательского ввода сначала вызовите HtmlIsValid.

Возвращает Color

Разобранный RGBA; пустой ввод отдельно возвращает (0, 0, 0, 1).

FromOkHslColor
# FromOkHsl
C#
public static Color FromOkHsl(float hue, float saturation, float lightness, float alpha = 1f);

Преобразует OKHSL в sRGB через нативный код движка. Это другая модель, чем HSV: используйте OkHslH, OkHslS и OkHslL для обратного чтения, а не H, S и V. Входные координаты обычно 0…1, hue — в оборотах. lightness = 0 даёт чёрный, 1 — белый.

Результат ограничивается 0…1 по всем четырём RGBA-компонентам, включая alpha. Это отличается от FromHsv. Для последующих вычислений в линейном пространстве вызовите SrgbToLinear(); для HDR без потери диапазона этот конструктор не подходит.

Параметры
ИмяТипПо умолчанию
huefloat—
saturationfloat—
lightnessfloat—
alphafloat1f
hue

Оттенок OKHSL в оборотах; передавайте конечное значение 0…1.

saturation

Насыщенность OKHSL; передавайте конечное значение 0…1.

lightness

Светлота OKHSL, не V из HSV; конечное значение 0…1.

alpha

Альфа; по умолчанию 1. Результат ограничен 0…1.

Возвращает Color

sRGB-цвет с ограниченными RGBA-компонентами.

FromRgbe9995Color
# FromRgbe9995
C#
public static Color FromRgbe9995(uint rgbe);

Декодирует упакованный HDR-формат RGBE9995: биты 0…8 — R, 9…17 — G, 18…26 — B, 27…31 — общая экспонента E. Каждый RGB-результат равен своей 9-битной мантиссе * 2^(E − 24). Альфа всегда 1: в формате нет канала A.

Не путайте с 0xRRGGBBAA из Color(uint). Значения RGB могут быть выше 1; метод не выполняет тональное отображение или sRGB/linear-преобразование. Нулевое число даёт непрозрачный чёрный.

Параметры
ИмяТипПо умолчанию
rgbeuint—
rgbe

32 бита RGBE9995 с общей экспонентой, не RGBA8.

Возвращает Color

Декодированный HDR RGB с A = 1.

FromStringColor
# FromString
C#
public static Color FromString(string str, Color @default);

Сначала проверяет HTML-код через HtmlIsValid, иначе ищет нормализованное имя из Colors. Если цвет не найден, возвращает default без изменения. Пустая строка тоже возвращает резервный цвет. Подходит для ввода с разрешёнными именами; для строго hex-ввода используйте HtmlIsValid и FromHtml.

Параметры
ИмяТипПо умолчанию
strstring—
defaultColor—
str

HTML-код RGB/RGBA из 3, 4, 6 или 8 hex-цифр с необязательным # либо имя из Colors.

default

Резервный цвет при нераспознанном вводе.

Возвращает Color

Разобранный цвет либо переданный default.

GetHashCodeint
# GetHashCode
C#
public override int GetHashCode();

Вычисляет HashCode.Combine(R, G, B, A). Используется с точным Equals, а не IsEqualApprox; численно близкие цвета не обязаны иметь один хеш. Не сохраняйте это значение как постоянный ID цвета между запусками.

Возвращает int

Хеш RGBA для текущего процесса.

HtmlIsValidbool
# HtmlIsValid
C#
public static bool HtmlIsValid(ReadOnlySpan<char> color);

Проверяет точный hex-формат: 3/4/6/8 цифр, необязательный начальный #, регистр не важен. Пустая строка, пробелы, имена цветов и CSS-функции не принимаются. Вызывайте перед FromHtml для недоверенного ввода: сам FromHtml не является строгой проверкой всех символов.

Параметры
ИмяТипПо умолчанию
colorReadOnlySpan<char>—
color

Проверяемый текст без автоматического Trim.

Возвращает bool

true только для допустимого hex-формата.

InvertedColor
# Inverted
C#
public Color Inverted();

Возвращает (1 − R, 1 − G, 1 − B, A). Сохраняет альфу; унарный оператор -color, напротив, возвращает 1 − A в альфе. Компоненты не ограничиваются.

Возвращает Color

Цвет с инвертированным RGB и прежней альфой.

IsEqualApproxbool
# IsEqualApprox
C#
public bool IsEqualApprox(Color other);

Сравнивает каждую RGBA-компоненту через Mathf.IsEqualApprox. Все четыре сравнения должны пройти, включая альфу. Это численный допуск, а не оценка визуального сходства; цвета в разных кодировках RGB сначала приведите к одной.

Параметры
ИмяТипПо умолчанию
otherColor—
other

Цвет в той же кодировке RGB.

Возвращает bool

true, если каждая RGBA-компонента приблизительно равна соответствующей.

LerpColor
# Lerp
C#
public Color Lerp(Color to, float weight);

Покомпонентно вычисляет RGBA + (to − RGBA) * weight. При weight = 0 возвращает начальный цвет, при 1 — to; вне 0…1 экстраполирует. Интерполирует и альфу. Не накладывает один слой на другой, не предумножает RGB и не переводит sRGB в linear. Для перехода между sRGB-цветами в линейном пространстве преобразуйте оба входа SrgbToLinear(), затем результат LinearToSrgb().

Параметры
ИмяТипПо умолчанию
toColor—
weightfloat—
to

Конечный цвет в той же кодировке RGB, что исходный.

weight

Коэффициент; обычно 0…1. Вне диапазона результат экстраполируется.

Возвращает Color

Новый интерполированный или экстраполированный RGBA.

LightenedColor
# Lightened
C#
public Color Lightened(float amount);

Осветляет RGB по формуле RGB + (1 − RGB) * amount, сохраняя A. При amount = 0 цвет прежний; при 1 RGB становится белым. amount не ограничивается: значения вне 0…1 дают экстраполяцию. Метод не преобразует цветовое пространство.

Параметры
ИмяТипПо умолчанию
amountfloat—
amount

Доля изменения; обычно 0…1, без автоматического ограничения.

Возвращает Color

Новый цвет с прежней альфой.

LinearToSrgbColor
# LinearToSrgb
C#
public Color LinearToSrgb();

Преобразует RGB из linear в sRGB поканальной передаточной функцией sRGB; A сохраняется. Вызывающий код должен знать кодировку входа: Color не хранит её метку. Метод не ограничивает HDR-значения и не делает тональное отображение. Повторное преобразование уже преобразованного цвета даст неверный результат. Исходная структура не меняется.

Возвращает Color

Новый цвет с RGB в sRGB и прежней альфой.

SrgbToLinearColor
# SrgbToLinear
C#
public Color SrgbToLinear();

Преобразует RGB из sRGB в linear поканальной передаточной функцией sRGB; A сохраняется. Вызывающий код должен знать кодировку входа: Color не хранит её метку. Метод не ограничивает HDR-значения и не делает тональное отображение. Повторное преобразование уже преобразованного цвета даст неверный результат. Исходная структура не меняется.

Возвращает Color

Новый цвет с RGB в linear и прежней альфой.

ToAbgr32uint
# ToAbgr32
C#
public uint ToAbgr32();

Упаковывает каналы в uint 0xAABBGGRR, по 8 бит на канал: порядок указан от старших битов к младшим. Умножает каждый канал на 255 и округляет Math.Round (середины к чётному). Передавайте конечные значения 0…1; метод не ограничивает диапазон. Для обычного цвета вне диапазона сначала используйте Clamp(); для HDR сначала выберите отображение яркости. Формат числа не задаёт порядок байтов памяти и не преобразует sRGB/linear.

Возвращает uint

Беззнаковое число 0xAABBGGRR; точность ограничена 8 битами на канал.

ToAbgr64ulong
# ToAbgr64
C#
public ulong ToAbgr64();

Упаковывает каналы в ulong 0xAAAABBBBGGGGRRRR, по 16 бит на канал: порядок указан от старших битов к младшим. Умножает каждый канал на 65535 и округляет Math.Round (середины к чётному). Передавайте конечные значения 0…1; метод не ограничивает диапазон. Для обычного цвета вне диапазона сначала используйте Clamp(); для HDR сначала выберите отображение яркости. Формат числа не задаёт порядок байтов памяти и не преобразует sRGB/linear.

Возвращает ulong

Беззнаковое число 0xAAAABBBBGGGGRRRR; точность ограничена 16 битами на канал.

ToArgb32uint
# ToArgb32
C#
public uint ToArgb32();

Упаковывает каналы в uint 0xAARRGGBB, по 8 бит на канал: порядок указан от старших битов к младшим. Умножает каждый канал на 255 и округляет Math.Round (середины к чётному). Передавайте конечные значения 0…1; метод не ограничивает диапазон. Для обычного цвета вне диапазона сначала используйте Clamp(); для HDR сначала выберите отображение яркости. Формат числа не задаёт порядок байтов памяти и не преобразует sRGB/linear.

Возвращает uint

Беззнаковое число 0xAARRGGBB; точность ограничена 8 битами на канал.

ToArgb64ulong
# ToArgb64
C#
public ulong ToArgb64();

Упаковывает каналы в ulong 0xAAAARRRRGGGGBBBB, по 16 бит на канал: порядок указан от старших битов к младшим. Умножает каждый канал на 65535 и округляет Math.Round (середины к чётному). Передавайте конечные значения 0…1; метод не ограничивает диапазон. Для обычного цвета вне диапазона сначала используйте Clamp(); для HDR сначала выберите отображение яркости. Формат числа не задаёт порядок байтов памяти и не преобразует sRGB/linear.

Возвращает ulong

Беззнаковое число 0xAAAARRRRGGGGBBBB; точность ограничена 16 битами на канал.

ToHsvvoid
# ToHsv
C#
public void ToHsv(out float hue, out float saturation, out float value);

Вычисляет HSV из текущих RGB и записывает три out-параметра; не меняет цвет и не возвращает альфу. Для обычного RGB в 0…1 оттенок и насыщенность тоже в 0…1. Серый цвет получает hue = 0 и saturation = 0; чёрный также value = 0. Для HDR value может быть выше 1. Расчёт идёт по хранимым RGB без преобразования sRGB/linear.

Параметры
ИмяТипПо умолчанию
huefloat—
saturationfloat—
valuefloat—
hue

Результат: оттенок в оборотах; для серого 0.

saturation

Результат: насыщенность; для чёрного 0.

value

Результат: max(R, G, B), не относительная яркость.

ToHtmlstring
# ToHtml
C#
public string ToHtml(bool includeAlpha = true);

Возвращает строчные hex-цифры без #: RRGGBBAA по умолчанию, RRGGBB при includeAlpha = false. Конечные значения каналов ограничиваются 0…1 и округляются до байта. Например, new Color(1, 1, 1, 0.5f).ToHtml() даёт "ffffff80". Это потеря точности до 8 бит на канал, без преобразования цветового пространства.

Параметры
ИмяТипПо умолчанию
includeAlphabooltrue
includeAlpha

true: добавить AA; false: вернуть только RGB.

Возвращает string

6 или 8 hex-цифр без #.

ToRgba32uint
# ToRgba32
C#
public uint ToRgba32();

Упаковывает каналы в uint 0xRRGGBBAA, по 8 бит на канал: порядок указан от старших битов к младшим. Умножает каждый канал на 255 и округляет Math.Round (середины к чётному). Передавайте конечные значения 0…1; метод не ограничивает диапазон. Для обычного цвета вне диапазона сначала используйте Clamp(); для HDR сначала выберите отображение яркости. Формат числа не задаёт порядок байтов памяти и не преобразует sRGB/linear.

Возвращает uint

Беззнаковое число 0xRRGGBBAA; точность ограничена 8 битами на канал.

ToRgba64ulong
# ToRgba64
C#
public ulong ToRgba64();

Упаковывает каналы в ulong 0xRRRRGGGGBBBBAAAA, по 16 бит на канал: порядок указан от старших битов к младшим. Умножает каждый канал на 65535 и округляет Math.Round (середины к чётному). Передавайте конечные значения 0…1; метод не ограничивает диапазон. Для обычного цвета вне диапазона сначала используйте Clamp(); для HDR сначала выберите отображение яркости. Формат числа не задаёт порядок байтов памяти и не преобразует sRGB/linear.

Возвращает ulong

Беззнаковое число 0xRRRRGGGGBBBBAAAA; точность ограничена 16 битами на канал.

ToString2 перегрузки
# ToString · 1/2
C#
public override string ToString();

Возвращает текст (R, G, B, A) с CultureInfo.InvariantCulture: десятичная точка не зависит от языка системы. Перегрузка без аргумента использует числовой формат по умолчанию. Для HTML-кода используйте ToHtml(), не ToString().

Возвращает string

Диагностическое текстовое представление RGBA.

# ToString · 2/2
C#
public string ToString(string? format);

Возвращает текст (R, G, B, A) с CultureInfo.InvariantCulture: десятичная точка не зависит от языка системы. format передаётся каждой float-компоненте; например F2 даёт два знака после точки. Для HTML-кода используйте ToHtml(), не ToString().

Параметры
ИмяТипПо умолчанию
formatstring—
format

Числовой формат float, например F2; null использует формат по умолчанию.

Возвращает string

Диагностическое текстовое представление RGBA.

op_AdditionColor
# op_Addition
C#
public static Color operator +(Color left, Color right);

Вычисляет + для каждой RGBA-компоненты с соответствующей компонентой второго цвета. Альфа тоже участвует. Не ограничивает каналы и не преобразует цветовое пространство. Это арифметика каналов; для наложения прозрачных слоёв используйте Blend.

Параметры
ИмяТипПо умолчанию
leftColor—
rightColor—
left

Операнд цвета; используются все RGBA-компоненты.

right

Операнд цвета; используются все RGBA-компоненты.

Возвращает Color

Новый результат покомпонентной арифметики.

op_Division2 перегрузки
# op_Division · 1/2
C#
public static Color operator /(Color left, Color right);

Вычисляет / для каждой RGBA-компоненты с соответствующей компонентой второго цвета. Альфа тоже участвует. Не ограничивает каналы и не преобразует цветовое пространство. Нулевой делитель float может дать Infinity или NaN; проверяйте делитель до вычисления.

Параметры
ИмяТипПо умолчанию
leftColor—
rightColor—
left

Операнд цвета; используются все RGBA-компоненты.

right

Операнд цвета; используются все RGBA-компоненты.

Возвращает Color

Новый результат покомпонентной арифметики.

# op_Division · 2/2
C#
public static Color operator /(Color color, float scale);

Вычисляет / для каждой RGBA-компоненты с одним scale. Альфа тоже участвует. Не ограничивает каналы и не преобразует цветовое пространство. Нулевой делитель float может дать Infinity или NaN; проверяйте делитель до вычисления.

Параметры
ИмяТипПо умолчанию
colorColor—
scalefloat—
color

Операнд цвета; используются все RGBA-компоненты.

scale

Делитель всех RGBA-компонент; проверяйте ненулевое значение.

Возвращает Color

Новый результат покомпонентной арифметики.

op_Equalitybool
# op_Equality
C#
public static bool operator ==(Color left, Color right);

Точное сравнение четырёх float-компонент RGBA оператором ==. После вычислений возможна погрешность: для приблизительного сравнения используйте IsEqualApprox. Не сравнивает видимый результат после наложения на фон.

Параметры
ИмяТипПо умолчанию
leftColor—
rightColor—
left

Сравниваемый RGBA.

right

Сравниваемый RGBA.

Возвращает bool

Результат точного сравнения.

op_GreaterThanbool
# op_GreaterThan
C#
public static bool operator >(Color left, Color right);

Лексикографически сравнивает конечные RGBA оператором >: сначала R, при равенстве G, затем B и A. Это порядок для сортировки, а не сравнение яркости или прозрачности. Не используйте NaN-компоненты для упорядочивания.

Параметры
ИмяТипПо умолчанию
leftColor—
rightColor—
left

Сравниваемый конечный RGBA.

right

Сравниваемый конечный RGBA.

Возвращает bool

Результат лексикографического сравнения.

op_GreaterThanOrEqualbool
# op_GreaterThanOrEqual
C#
public static bool operator >=(Color left, Color right);

Лексикографически сравнивает конечные RGBA оператором >=: сначала R, при равенстве G, затем B и A. Это порядок для сортировки, а не сравнение яркости или прозрачности. Не используйте NaN-компоненты для упорядочивания.

Параметры
ИмяТипПо умолчанию
leftColor—
rightColor—
left

Сравниваемый конечный RGBA.

right

Сравниваемый конечный RGBA.

Возвращает bool

Результат лексикографического сравнения.

op_Inequalitybool
# op_Inequality
C#
public static bool operator !=(Color left, Color right);

Точное сравнение четырёх float-компонент RGBA оператором !=. После вычислений возможна погрешность: для приблизительного сравнения используйте IsEqualApprox. Не сравнивает видимый результат после наложения на фон.

Параметры
ИмяТипПо умолчанию
leftColor—
rightColor—
left

Сравниваемый RGBA.

right

Сравниваемый RGBA.

Возвращает bool

Результат точного сравнения.

op_LessThanbool
# op_LessThan
C#
public static bool operator <(Color left, Color right);

Лексикографически сравнивает конечные RGBA оператором <: сначала R, при равенстве G, затем B и A. Это порядок для сортировки, а не сравнение яркости или прозрачности. Не используйте NaN-компоненты для упорядочивания.

Параметры
ИмяТипПо умолчанию
leftColor—
rightColor—
left

Сравниваемый конечный RGBA.

right

Сравниваемый конечный RGBA.

Возвращает bool

Результат лексикографического сравнения.

op_LessThanOrEqualbool
# op_LessThanOrEqual
C#
public static bool operator <=(Color left, Color right);

Лексикографически сравнивает конечные RGBA оператором <=: сначала R, при равенстве G, затем B и A. Это порядок для сортировки, а не сравнение яркости или прозрачности. Не используйте NaN-компоненты для упорядочивания.

Параметры
ИмяТипПо умолчанию
leftColor—
rightColor—
left

Сравниваемый конечный RGBA.

right

Сравниваемый конечный RGBA.

Возвращает bool

Результат лексикографического сравнения.

op_Multiply3 перегрузки
# op_Multiply · 1/3
C#
public static Color operator *(Color left, Color right);

Вычисляет * для каждой RGBA-компоненты с соответствующей компонентой второго цвета. Альфа тоже участвует. Не ограничивает каналы и не преобразует цветовое пространство. Это арифметика каналов; для наложения прозрачных слоёв используйте Blend.

Параметры
ИмяТипПо умолчанию
leftColor—
rightColor—
left

Операнд цвета; используются все RGBA-компоненты.

right

Операнд цвета; используются все RGBA-компоненты.

Возвращает Color

Новый результат покомпонентной арифметики.

# op_Multiply · 2/3
C#
public static Color operator *(Color color, float scale);

Вычисляет * для каждой RGBA-компоненты с одним scale. Альфа тоже участвует. Не ограничивает каналы и не преобразует цветовое пространство. Это арифметика каналов; для наложения прозрачных слоёв используйте Blend.

Параметры
ИмяТипПо умолчанию
colorColor—
scalefloat—
color

Операнд цвета; используются все RGBA-компоненты.

scale

Множитель всех RGBA-компонент.

Возвращает Color

Новый результат покомпонентной арифметики.

# op_Multiply · 3/3
C#
public static Color operator *(float scale, Color color);

Вычисляет * для каждой RGBA-компоненты с одним scale. Альфа тоже участвует. Не ограничивает каналы и не преобразует цветовое пространство. Это арифметика каналов; для наложения прозрачных слоёв используйте Blend.

Параметры
ИмяТипПо умолчанию
scalefloat—
colorColor—
scale

Множитель всех RGBA-компонент.

color

Операнд цвета; используются все RGBA-компоненты.

Возвращает Color

Новый результат покомпонентной арифметики.

op_SubtractionColor
# op_Subtraction
C#
public static Color operator -(Color left, Color right);

Вычисляет − для каждой RGBA-компоненты с соответствующей компонентой второго цвета. Альфа тоже участвует. Не ограничивает каналы и не преобразует цветовое пространство. Это арифметика каналов; для наложения прозрачных слоёв используйте Blend.

Параметры
ИмяТипПо умолчанию
leftColor—
rightColor—
left

Операнд цвета; используются все RGBA-компоненты.

right

Операнд цвета; используются все RGBA-компоненты.

Возвращает Color

Новый результат покомпонентной арифметики.

op_UnaryNegationColor
# op_UnaryNegation
C#
public static Color operator -(Color color);

Возвращает (1 − R, 1 − G, 1 − B, 1 − A). Это инверсия относительно белого, а не арифметическое изменение знака. Альфа тоже инвертируется. Чтобы сохранить альфу, используйте Inverted().

Параметры
ИмяТипПо умолчанию
colorColor—
color

Исходный RGBA.

Возвращает Color

Цвет с четырьмя инвертированными компонентами.

op_UnaryPlusColor
# op_UnaryPlus
C#
public static Color operator +(Color color);

Возвращает цвет без изменений; не ограничивает компоненты.

Параметры
ИмяТипПо умолчанию
colorColor—
color

Исходный RGBA.

Возвращает Color

Тот же RGBA.

Поля и константы4

AПоле
# A
C#
public float A;

Альфа как float без ограничения диапазона; обычно 0 — полностью прозрачно, 1 — непрозрачно. Реальный эффект зависит от материала и режима смешивания. Изменение A само по себе не умножает RGB на альфу.

BПоле
# B
C#
public float B;

Компонента B как float без ограничения диапазона. Обычно 0…1; значения выше 1 можно хранить для HDR-вычислений. Структура не помечает канал как sRGB или linear: это определяет код, использующий цвет.

GПоле
# G
C#
public float G;

Компонента G как float без ограничения диапазона. Обычно 0…1; значения выше 1 можно хранить для HDR-вычислений. Структура не помечает канал как sRGB или linear: это определяет код, использующий цвет.

RПоле
# R
C#
public float R;

Компонента R как float без ограничения диапазона. Обычно 0…1; значения выше 1 можно хранить для HDR-вычислений. Структура не помечает канал как sRGB или linear: это определяет код, использующий цвет.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.