PathGradientBrush::GetInterpolationColors-Methode (gdipluspath.h)
Die PathGradientBrush::GetInterpolationColors-Methode ruft die voreingestellten Farben und Mischpositionen ab, die derzeit für diesen Pfadfarbverlaufpinsel angegeben sind.
Syntax
Status GetInterpolationColors(
[out] Color *presetColors,
[out] REAL *blendPositions,
[in] INT count
);
Parameter
[out] presetColors
Typ: Farbe*
Zeiger auf ein Array, das die voreingestellten Farben empfängt. Eine Farbe eines bestimmten Indexes im PresetColors-Array entspricht der Mischposition desselben Indexes im BlendPositions-Array .
[out] blendPositions
Typ: REAL*
Zeiger auf ein Array, das die Mischpositionen empfängt. Jede Mischposition ist eine Zahl von 0 bis 1, wobei 0 die Grenze des Farbverlaufs und 1 den Mittelpunkt angibt. Eine Mischposition zwischen 0 und 1 gibt den Satz aller Punkte an, die einen bestimmten Bruchteil des Abstands von der Grenze zum Mittelpunkt aufweisen. Beispielsweise gibt eine Mischposition von 0,7 den Satz aller Punkte an, die 70 Prozent des Weges von der Grenze zum Mittelpunkt aufweisen.
[in] count
Typ: INT
Ganzzahl, die die Anzahl der Elemente im PresetColors-Array angibt. Dies entspricht der Anzahl der Elemente im BlendPositions-Array .
Rückgabewert
Typ: Status
Wenn die Methode erfolgreich ist, gibt sie OK zurück, ein Element der Status-Enumeration .
Wenn die Methode fehlschlägt, wird eines der anderen Elemente der Status-Enumeration zurückgegeben.
Hinweise
Ein einfacher Pfadfarbverlaufpinsel hat zwei Farben: eine Begrenzungsfarbe und eine mittlere Farbe. Wenn Sie mit einem solchen Pinsel malen, ändert sich die Farbe allmählich von der Begrenzungsfarbe zur Mittleren Farbe, während Sie vom Begrenzungspfad zum Mittelpunkt wechseln. Sie können einen komplexeren Farbverlauf erstellen, indem Sie ein Array von voreingestellten Farben und ein Array von Mischpositionen angeben.
Bevor Sie die PathGradientBrush::GetInterpolationColors-Methode aufrufen, müssen Sie zwei Puffer zuordnen: einen, um das Array der voreingestellten Farben aufzunehmen, und einer, um das Array der Mischpositionen zu speichern. Sie können die PathGradientBrush::GetInterpolationColorCount-Methode des PathGradientBrush-Objekts aufrufen, um die erforderliche Größe dieser Puffer zu bestimmen. Die Größe des Farbpuffers ist der Rückgabewert von PathGradientBrush::GetInterpolationColorCount multipliziert mit sizeof(Color). Die Größe des Positionspuffers ist der Wert von PathGradientBrush::GetInterpolationColorCount multipliziert mit sizeof( REAL).
Beispiele
Im folgenden Beispiel wird ein PathGradientBrush-Objekt aus einem dreieckigen Pfad erstellt. Der Code legt die voreingestellten Farben auf Rot, Blau und Aqua und die Mischpositionen auf 0, 0,6 und 1 fest. Der Code ruft die PathGradientBrush::GetInterpolationColorCount-Methode des PathGradientBrush-Objekts auf, um die Anzahl der voreingestellten Farben abzurufen, die derzeit für den Pinsel festgelegt sind. Als Nächstes ordnet der Code zwei Puffer zu: einen für das Array der voreingestellten Farben und einer für das Array der Mischpositionen. Der Aufruf der PathGradientBrush::GetInterpolationColors-Methode des PathGradientBrush-Objekts füllt die Puffer mit den voreingestellten Farben und den Mischpositionen aus. Schließlich füllt der Code ein kleines Quadrat mit jeder der voreingestellten Farben aus.
VOID Example_GetInterpColors(HDC hdc)
{
Graphics graphics(hdc);
// Create a path gradient brush from an array of points, and
// set the interpolation colors for that brush.
Point points[] = {Point(100, 0), Point(200, 200), Point(0, 200)};
PathGradientBrush pthGrBrush(points, 3);
Color col[] = {
Color(255, 255, 0, 0), // red
Color(255, 0, 0, 255), // blue
Color(255, 0, 255, 255)}; // aqua
REAL pos[] = {
0.0f, // red at the boundary
0.6f, // blue 60 percent of the way from the boundary to the center
1.0f}; // aqua at the center
pthGrBrush.SetInterpolationColors(col, pos, 3);
// Obtain information about the path gradient brush.
INT colorCount = pthGrBrush.GetInterpolationColorCount();
Color* colors = new Color[colorCount];
REAL* positions = new REAL[colorCount];
pthGrBrush.GetInterpolationColors(colors, positions, colorCount);
// Fill a small square with each of the interpolation colors.
SolidBrush solidBrush(Color(255, 255, 255, 255));
for(INT j = 0; j < colorCount; ++j)
{
solidBrush.SetColor(colors[j]);
graphics.FillRectangle(&solidBrush, 15*j, 0, 10, 10);
}
delete [] colors;
delete [] positions;
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows XP, Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | gdipluspath.h (include Gdiplus.h) |
Bibliothek | Gdiplus.lib |
DLL | Gdiplus.dll |
Weitere Informationen
Füllen einer Form mit einem Farbverlauf