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


структура D2D1_GRADIENT_STOP (d2d1.h)

Содержит положение и цвет остановки градиента.

Синтаксис

typedef struct D2D1_GRADIENT_STOP {
  FLOAT        position;
  D2D1_COLOR_F color;
} D2D1_GRADIENT_STOP;

Члены

position

Тип: FLOAT

Значение типа , указывающее относительное положение остановки градиента в кисти. Это значение должно находиться в диапазоне [0,0f, 1,0f], если остановка градиента должна быть видна явно.

color

Тип: D2D1_COLOR_F

Цвет ограничения градиента.

Комментарии

Градиентные остановки можно указать в любом порядке, если они находятся в разных позициях. Две позиции могут совместно использовать одну позицию. В этом случае первая указанная остановка обрабатывается как "низкая" остановка (ближе 0,0f), а последующие — как "более высокий" (ближе 1,0f). Это полезно, если вызывающему объекту требуется мгновенный переход в середине остановки.

Как правило, в коллекции есть по крайней мере две точки, хотя создание только с одной остановкой разрешено. Например, одна точка находится в позиции 0,0f, другая — в позиции 1,0f, а дополнительные точки распределяются в диапазоне [0, 1]. Если прогрессия градиента выходит за пределы диапазона [0, 1], то остановки сохраняются, но могут повлиять на градиент.

При рисовании диапазон позиций [0, 1] сопоставляется с кистью в зависимости от кисти. Дополнительные сведения см. в разделах ID2D1LinearGradientBrush и ID2D1RadialGradientBrush.

Градиентные остановки с позицией за пределами диапазона [0, 1] не могут быть видны явно, но они по-прежнему могут влиять на цвета, созданные в диапазоне [0, 1]. Например, градиент с двумя стопами {{0.0f, Black}, {2.0f, White}} визуально неотличим от {{0.0f, Black}, {1.0f, среднего уровня серый}}. Кроме того, цвета зажимаются перед интерполяцией.

Примеры

В следующем примере создается массив остановок градиента, а затем используется для создания id2D1GradientStopCollection.

// Create an array of gradient stops to put in the gradient stop
// collection that will be used in the gradient brush.
ID2D1GradientStopCollection *pGradientStops = NULL;

D2D1_GRADIENT_STOP gradientStops[2];
gradientStops[0].color = D2D1::ColorF(D2D1::ColorF::Yellow, 1);
gradientStops[0].position = 0.0f;
gradientStops[1].color = D2D1::ColorF(D2D1::ColorF::ForestGreen, 1);
gradientStops[1].position = 1.0f;
// Create the ID2D1GradientStopCollection from a previously
// declared array of D2D1_GRADIENT_STOP structs.
hr = m_pRenderTarget->CreateGradientStopCollection(
    gradientStops,
    2,
    D2D1_GAMMA_2_2,
    D2D1_EXTEND_MODE_CLAMP,
    &pGradientStops
    );

В следующем примере кода используется ID2D1GradientStopCollection для создания ID2D1LinearGradientBrush.

// The line that determines the direction of the gradient starts at
// the upper-left corner of the square and ends at the lower-right corner.

if (SUCCEEDED(hr))
{
    hr = m_pRenderTarget->CreateLinearGradientBrush(
        D2D1::LinearGradientBrushProperties(
            D2D1::Point2F(0, 0),
            D2D1::Point2F(150, 150)),
        pGradientStops,
        &m_pLinearGradientBrush
        );
}

Требования

   
Минимальная версия клиента Windows 7, Windows Vista с пакетом обновления 2 (SP2) и обновление платформы для Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 R2, Windows Server 2008 с пакетом обновления 2 (SP2) и Обновление платформы для Windows Server 2008 [классические приложения | Приложения UWP]
Верхняя часть d2d1.h

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

Обзор кистей

CreateGradientStopCollection

Создание линейной градиентной кисти

Создание радиальной градиентной кисти

ID2D1GradientStopCollection

ID2D1LinearGradientBrush

ID2D1RadialGradientBrush