estrutura D2D1_GRADIENT_STOP (d2d1.h)

Contém a posição e a cor de uma parada de gradiente.

Sintaxe

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

Membros

position

Tipo: FLOAT

Um valor que indica a posição relativa da parada de gradiente no pincel. Esse valor deve estar no intervalo [0.0f, 1.0f] se a parada de gradiente deve ser vista explicitamente.

color

Tipo: D2D1_COLOR_F

A cor da parada de gradiente.

Comentários

As paradas de gradiente poderão ser especificadas em qualquer ordem se estiverem em posições diferentes. Duas paradas podem compartilhar uma posição. Nesse caso, a primeira parada especificada é tratada como a parada "baixa" (mais próxima de 0,0f) e as paradas subsequentes são tratadas como "superiores" (mais próximas de 1,0f). Esse comportamento será útil se um chamador quiser uma transição instantânea no meio de uma parada.

Normalmente, há pelo menos dois pontos em uma coleção, embora a criação com apenas uma parada seja permitida. Por exemplo, um ponto está na posição 0,0f, outro ponto está na posição 1,0f e pontos adicionais são distribuídos no intervalo [0, 1]. Onde a progressão de gradiente está além do intervalo de [0, 1], as paradas são armazenadas, mas podem afetar o gradiente.

Quando desenhado, o intervalo de posições [0, 1] é mapeado para o pincel, de maneira dependente de pincel. Para obter detalhes, consulte ID2D1LinearGradientBrush e ID2D1RadialGradientBrush.

As paradas de gradiente com uma posição fora do intervalo [0, 1] não podem ser vistas explicitamente, mas ainda podem afetar as cores produzidas no intervalo [0, 1]. Por exemplo, um gradiente de duas paradas {{0.0f, Black}, {2.0f, White}} é indistinguível visualmente de {{0.0f, Black}, {1.0f, Cinza de nível médio}}. Além disso, as cores são fixadas antes da interpolação.

Exemplos

O exemplo a seguir cria uma matriz de paradas de gradiente e as usa para criar uma 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
    );

O próximo exemplo de código usa o ID2D1GradientStopCollection para criar um 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
        );
}

Requisitos

   
Cliente mínimo com suporte Windows 7, Windows Vista com SP2 e Atualização de Plataforma para Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008 R2, Windows Server 2008 com SP2 e Platform Update para Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP]
Cabeçalho d2d1.h

Confira também

Visão geral de pincéis

CreateGradientStopCollection

Como criar um pincel de gradiente linear

Como criar um pincel de gradiente radial

ID2D1GradientStopCollection

ID2D1LinearGradientBrush

ID2D1RadialGradientBrush