Поделиться через


Метод ID2D1DeviceContext::CreateGradientStopCollection (d2d1_1.h)

Создает коллекцию остановок градиента, позволяя градиенту содержать цветовые каналы со значениями за пределами [0,1], а также обеспечивает отрисовку в объекте отрисовки высокого цвета с интерполяцией в пространстве sRGB.

Синтаксис

HRESULT CreateGradientStopCollection(
        const D2D1_GRADIENT_STOP      *straightAlphaGradientStops,
        UINT32                        straightAlphaGradientStopsCount,
        D2D1_COLOR_SPACE              preInterpolationSpace,
        D2D1_COLOR_SPACE              postInterpolationSpace,
        D2D1_BUFFER_PRECISION         bufferPrecision,
        D2D1_EXTEND_MODE              extendMode,
        D2D1_COLOR_INTERPOLATION_MODE colorInterpolationMode,
  [out] ID2D1GradientStopCollection1  **gradientStopCollection1
);

Параметры

straightAlphaGradientStops

Тип: const D2D1_GRADIENT_STOP*

Массив значений цвета и смещения.

straightAlphaGradientStopsCount

Тип: UINT

Количество элементов в массиве gradientStops .

preInterpolationSpace

Тип: D2D1_COLOR_SPACE

Указывает входное цветовое пространство и пространство, в котором происходит интерполяция цвета.

postInterpolationSpace

Тип: D2D1_COLOR_SPACE

Цветовое пространство, в которое будут преобразованы цвета после интерполяции.

bufferPrecision

Тип: D2D1_BUFFER_PRECISION

Точность текстуры, используемой для хранения интерполированных значений.

Примечание Этот метод завершится ошибкой, если базовое устройство Direct3D не поддерживает запрошенную точность буфера. Используйте ID2D1DeviceContext::IsBufferPrecisionSupported , чтобы определить, что поддерживается.
 

extendMode

Тип: D2D1_EXTEND_MODE

Определяет, как определяются цвета за пределами диапазона, определенного коллекцией stop.

colorInterpolationMode

Тип: D2D1_COLOR_INTERPOLATION_MODE

Определяет способ интерполяции цветов. D2D1_COLOR_INTERPOLATION_MODE_PREMULTIPLIED используется по умолчанию, дополнительные сведения см. в разделе Примечания.

[out] gradientStopCollection1

Тип: ID2D1GradientStopCollection1**

Новая коллекция остановок градиента.

Возвращаемое значение

Тип: HRESULT

Метод возвращает HRESULT. Допустимые значения включают, но не ограничиваются, значения, приведенные в следующей таблице.

HRESULT Описание:
S_OK Без ошибок.
E_OUTOFMEMORY Direct2D не удалось выделить достаточно памяти для завершения вызова.
E_INVALIDARG В метод передано недопустимое значение.

Комментарии

Этот метод линейно интерполирует между остановками цвета. Дополнительное преобразование цветового пространства применяется после интерполяции. Применяется ли это гамма-преобразование и как оно определяется до и после интерполяции. Этот метод завершится ошибкой, если контекст устройства не поддерживает запрошенную точность буфера.

Чтобы получить нужный результат, необходимо убедиться, что входные данные указаны в правильном цветовом пространстве.

Необходимо всегда указывать цвета в прямом альфа-канале, независимо от режима интерполяции предварительного или прямого. Режим интерполяции влияет только на интерполированные значения. Аналогичным образом, остановки, возвращаемые ID2D1GradientStopCollection::GetGradientStops, всегда будут иметь прямой альфа-канал.

Если указать D2D1_COLOR_INTERPOLATION_MODE_PREMULTIPLIED, все остановки предварительно удаляются перед интерполяцией, а затем отменяются предварительно перед преобразованием цвета.

Начиная с Windows 8, поведение интерполяции этого метода изменилось.

В таблице здесь показано поведение в Windows 7 и более ранних версиях.

Gamma Поведение перед интерполяцией Поведение после интерполяции GetColorInteroplationGamma (выходное цветовое пространство)
1,0 Зажимает входные данные, а затем преобразует sRGB в scRGB. Преобразует scRGB в sRGB после интерполяции. 1.0
2.2 Зажимает входные данные. Нет операции 2.2
 

В таблице ниже показано поведение в Windows 8 и более поздних версий.

Gamma Поведение перед интерполяцией Поведение после интерполяции GetColorInteroplationGamma (выходное цветовое пространство)
sRGB в scRGB Нет операции Зажимает выходные данные, а затем преобразует sRGB в scRGB. 1,0
из scRGB в sRGB Нет операции Зажимает выходные данные, а затем преобразует sRGB в scRGB. 2.2
sRGB — sRGB Нет операции Нет операции 2.2
scRGB в scRGB Нет операции Нет операции 1,0

Требования

Требование Значение
Минимальная версия клиента Windows 8 и обновление платформы для Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2012 и обновление платформы для Windows Server 2008 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header d2d1_1.h
DLL D2d1.dll

См. также раздел

D2D1_BUFFER_PRECISION

D2D1_EXTEND_MODE

D2D1_GAMMA_CONVERSION

D2D1_GRADIENT_STOP

ID2D1DeviceContext

ID2D1GradientStopCollection1

ID2D1RenderTarget::CreateGradientStopCollection