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
Como criar um pincel de gradiente linear