ID2D1DeviceContext::CreateGradientStopCollection-Methode (d2d1_1.h)

Erstellt eine Farbverlaufsstoppauflistung, wodurch der Farbverlauf Farbkanäle mit Werten außerhalb von [0,1] enthalten kann, und ermöglicht das Rendern zu einem Renderziel mit hoher Farbe mit Interpolation im sRGB-Raum.

Syntax

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
);

Parameter

straightAlphaGradientStops

Typ: const D2D1_GRADIENT_STOP*

Ein Array von Farbwerten und Offsets.

straightAlphaGradientStopsCount

Typ: UINT

Die Anzahl der Elemente im Array gradientStops .

preInterpolationSpace

Typ: D2D1_COLOR_SPACE

Gibt sowohl den Eingabefarbraum als auch den Raum an, in dem die Farbinterpolation stattfindet.

postInterpolationSpace

Typ: D2D1_COLOR_SPACE

Der Farbraum, in den Farben konvertiert werden, nachdem die Interpolation erfolgt.

bufferPrecision

Typ: D2D1_BUFFER_PRECISION

Die Genauigkeit der Textur, die verwendet wird, um interpolierte Werte zu enthalten.

Hinweis Bei dieser Methode tritt ein Fehler auf, wenn das zugrunde liegende Direct3D-Gerät die angeforderte Puffergenauigkeit nicht unterstützt. Verwenden Sie ID2D1DeviceContext::IsBufferPrecisionSupported , um zu bestimmen, was unterstützt wird.
 

extendMode

Typ: D2D1_EXTEND_MODE

Definiert, wie Farben außerhalb des durch die Stoppauflistung definierten Bereichs bestimmt werden.

colorInterpolationMode

Typ: D2D1_COLOR_INTERPOLATION_MODE

Definiert, wie Farben interpoliert werden. D2D1_COLOR_INTERPOLATION_MODE_PREMULTIPLIED standard ist, finden Sie weitere Informationen unter Hinweise.

[out] gradientStopCollection1

Typ: ID2D1GradientStopCollection1**

Die neue Farbverlaufstoppauflistung.

Rückgabewert

Typ: HRESULT

Die Methode gibt ein HRESULT zurück. Mögliches Werte (aber nicht die Einzigen) sind die in der folgenden Tabelle.

HRESULT BESCHREIBUNG
S_OK Kein Fehler ist aufgetreten.
E_OUTOFMEMORY Direct2D konnte nicht genügend Arbeitsspeicher zuweisen, um den Aufruf abzuschließen.
E_INVALIDARG Ein ungültiger Wert wurde an die -Methode übergeben.

Hinweise

Diese Methode interpoliert linear zwischen den Farbstopps. Nach der Interpolation wird eine optionale Farbraumkonvertierung angewendet. Ob und wie diese Gammakonvertierung angewendet wird, wird durch die Pre- und Post-Interpolation bestimmt. Bei dieser Methode tritt ein Fehler auf, wenn der Gerätekontext die angeforderte Puffergenauigkeit nicht unterstützt.

Um das gewünschte Ergebnis zu erhalten, müssen Sie sicherstellen, dass die Eingaben im richtigen Farbraum angegeben werden.

Sie müssen immer Farben in der geraden Alpha angeben, unabhängig davon, ob der Interpolationsmodus vormultipliziert oder gerade ist. Der Interpolationsmodus wirkt sich nur auf die interpolierten Werte aus. Ebenso haben die von ID2D1GradientStopCollection::GetGradientStopStops zurückgegebenen Stopps immer ein gerades Alpha.

Wenn Sie D2D1_COLOR_INTERPOLATION_MODE_PREMULTIPLIED angeben, werden alle Stopps vor der Interpolation vor multipliziert und dann vor der Farbkonvertierung aufgehoben.

Ab Windows 8 hat sich das Interpolationsverhalten dieser Methode geändert.

Die folgende Tabelle zeigt das Verhalten in Windows 7 und früher.

Gamma Verhalten vor der Interpolation Verhalten nach der Interpolation GetColorInteroplationGamma (Ausgabefarbraum)
1.0 Klemmt die Eingaben und konvertiert dann von sRGB in scRGB. Konvertiert nach der Interpolation von scRGB in sRGB. 1.0
2.2 Klemmt die Eingaben. Keine Operation 2.2
 

Die tabelle hier zeigt das Verhalten in Windows 8 und höher.

Gamma Verhalten vor der Interpolation Verhalten nach der Interpolation GetColorInteroplationGamma (Ausgabefarbraum)
sRGB zu scRGB Keine Operation Klemmt die Ausgaben und konvertiert dann von sRGB in scRGB. 1.0
scRGB zu sRGB Keine Operation Klemmt die Ausgaben und konvertiert dann von sRGB in scRGB. 2.2
sRGB zu sRGB Keine Operation Keine Operation 2.2
scRGB zu scRGB Keine Operation Keine Operation 1.0

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8 und Plattformupdate für Windows Vista [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2012- und Plattformupdate für Windows Server 2008 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile d2d1_1.h
DLL D2d1.dll

Weitere Informationen

D2D1_BUFFER_PRECISION

D2D1_EXTEND_MODE

D2D1_GAMMA_CONVERSION

D2D1_GRADIENT_STOP

ID2D1DeviceContext

ID2D1GradientStopCollection1

ID2D1RenderTarget::CreateGradientStopCollection