D2D1_GRADIENT_STOP-Struktur (d2d1.h)
Enthält die Position und Farbe eines Farbverlaufsstopps.
Syntax
typedef struct D2D1_GRADIENT_STOP {
FLOAT position;
D2D1_COLOR_F color;
} D2D1_GRADIENT_STOP;
Member
position
Typ: FLOAT
Ein -Wert, der die relative Position des Farbverlaufsstopps im Pinsel angibt. Dieser Wert muss im Bereich [0.0f, 1.0f] liegen, wenn der Farbverlaufsstopp explizit angezeigt werden soll.
color
Typ: D2D1_COLOR_F
Die Farbe des Farbverlaufsstopps.
Hinweise
Farbverlaufsstopps können in beliebiger Reihenfolge angegeben werden, wenn sie sich an unterschiedlichen Positionen befinden. Zwei Stopps können sich eine Position teilen. In diesem Fall wird der erste angegebene Stopp als "niedriger" Stopp (näher bei 0,0f) behandelt, und nachfolgende Stopps werden als "höher" (näher bei 1,0f) behandelt. Dieses Verhalten ist nützlich, wenn ein Aufrufer einen sofortigen Übergang in der Mitte eines Stopps wünscht.
In der Regel gibt es mindestens zwei Punkte in einer Sammlung, obwohl die Erstellung mit nur einem Stopp zulässig ist. Beispielsweise befindet sich ein Punkt an Position 0,0f, ein anderer Punkt an Position 1,0f, und zusätzliche Punkte werden im Bereich [0, 1] verteilt. Wenn der Farbverlauf außerhalb des Bereichs von [0, 1] liegt, werden die Stopps gespeichert, können sich jedoch auf den Farbverlauf auswirken.
Beim Zeichnen wird der [0, 1]-Positionsbereich dem Pinsel auf pinselabhängige Weise zugeordnet. Weitere Informationen finden Sie unter ID2D1LinearGradientBrush und ID2D1RadialGradientBrush.
Farbverlaufsstopps mit einer Position außerhalb des [0, 1]-Bereichs können nicht explizit angezeigt werden, aber sie können sich weiterhin auf die Farben auswirken, die im [0, 1] Bereich erzeugt werden. Beispielsweise ist ein Farbverlauf mit zwei Stopps {{0.0f, Black}, {2.0f, White}} visuell nicht von {{0.0f, Black}, {1.0f, Mid-level gray}} zu unterscheiden. Außerdem werden die Farben vor der Interpolation eingeklemmt.
Beispiele
Im folgenden Beispiel wird ein Array von Farbverlaufsstopps erstellt und dann verwendet, um eine ID2D1GradientStopCollection zu erstellen.
// 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
);
Im nächsten Codebeispiel wird die ID2D1GradientStopCollection verwendet, um einen ID2D1LinearGradientBrush zu erstellen.
// 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
);
}
Anforderungen
Unterstützte Mindestversion (Client) | Windows 7, Windows Vista mit SP2 und Plattformupdate für Windows Vista [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 R2, Windows Server 2008 mit SP2 und Plattformupdate für Windows Server 2008 [Desktop-Apps | UWP-Apps] |
Kopfzeile | d2d1.h |
Weitere Informationen
Erstellen eines linearen Farbverlaufspinsels