Share via


LinearGradientBrush::GetBlend-Methode (gdiplusbrush.h)

Die LinearGradientBrush::GetBlend-Methode ruft die Blendfaktoren und die entsprechenden Blendpositionen aus einem LinearGradientBrush-Objekt ab.

Syntax

Status GetBlend(
  [out] REAL *blendFactors,
  [out] REAL *blendPositions,
  [in]  INT  count
);

Parameter

[out] blendFactors

Typ: REAL*

Zeiger auf ein Array, das die Mischfaktoren empfängt. Jede Zahl im Array gibt einen Prozentsatz der Endfarbe an und liegt im Bereich von 0,0 bis 1,0.

[out] blendPositions

Typ: REAL*

Zeiger auf ein Array, das die Mischpositionen empfängt. Jede Zahl im Array gibt einen Prozentsatz des Abstands zwischen der Anfangsgrenze und der Endgrenze an und liegt im Bereich von 0,0 bis 1,0, wobei 0,0 die Anfangsgrenze des Farbverlaufs und 1,0 die Endgrenze angibt. Eine Mischposition zwischen 0,0 und 1,0 gibt eine Linie parallel zu den Begrenzungslinien an, die einen bestimmten Bruchteil des Abstands von der Startgrenze zur Endgrenze darstellt. Beispielsweise gibt eine Mischposition von 0,7 die Linie an, die 70 Prozent des Abstands von der Startgrenze zur Endgrenze beträgt. Die Farbe ist konstant für Linien, die parallel zu den Begrenzungslinien sind.

[in] count

Typ: INT

Ganzzahl, die die Anzahl der abzurufenden Mischfaktoren angibt. Rufen Sie vor dem Aufrufen der LinearGradientBrush::GetBlend-Methode eines LinearGradientBrush-Objekts die LinearGradientBrush::GetBlendCount-Methode desselben LinearGradientBrush-Objekts auf, um die aktuelle Anzahl von Blendfaktoren zu bestimmen. Die Anzahl der abgerufenen Blendpositionen entspricht der Anzahl der abgerufenen Blendfaktoren.

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 LinearGradientBrush-Objekt weist zwei parallele Grenzen auf: eine Anfangsgrenze und eine Endgrenze. Jeder dieser beiden Grenzen ist eine Farbe zugeordnet. Jede Grenze ist eine gerade Linie, die einen angegebenen Punkt durchläuft – die Anfangsgrenze durchläuft den Ausgangspunkt; Die Endgrenze durchläuft den Endpunkt – und ist senkrecht zur Richtung des linearen Farbverlaufspinsels. Die Richtung des linearen Farbverlaufspinsels folgt der Linie, die durch den Anfangs- und Endpunkt definiert wird. Diese Linie, die "Richtungslinie", kann horizontal, vertikal oder diagonal sein. Alle Punkte, die auf einer Linie liegen, die parallel zu den Begrenzungen ist, haben dieselbe Farbe. Wenn Sie einen Bereich mit einem linearen Farbverlaufpinsel füllen, ändert sich die Farbe allmählich von einer Linie zur nächsten, während Sie entlang der Richtungslinie von der Startgrenze zur Endgrenze navigieren. Standardmäßig ist die Farbänderung proportional zur Änderung des Abstands. Das heißt, eine Linie, die 30 Prozent des Abstands zwischen der Anfangsgrenze und der Endgrenze liegt, weist eine Farbe auf, die 30 Prozent des Abstands zwischen der Anfangsbegrenzungsfarbe und der Endbegrenzungsfarbe beträgt. Das Farbmuster wird außerhalb der Anfangs- und Endgrenzen wiederholt.

Sie können die LinearGradientBrush::SetBlend-Methode eines LinearGradientBrush-Objekts aufrufen, um die Beziehung zwischen Farbe und Abstand anzupassen. Angenommen, Sie legen die Mischpositionen auf {0, 0,5, 1} und die Mischfaktoren auf {0, 0,3, 1} fest. Dann weist eine Linie, die 50 Prozent des Abstands zwischen der Anfangsgrenze und der Endgrenze liegt, eine Farbe auf, die 30 Prozent des Abstands zwischen der Anfangsbegrenzungsfarbe und der Endbegrenzungsfarbe beträgt.

Beispiele

Im folgenden Beispiel wird ein linearer Farbverlaufpinsel erstellt, dessen Mischung festgelegt und der Pinsel verwendet, um ein Rechteck zu füllen. Der Code ruft dann die Mischung ab. Die Mischfaktoren und -positionen können dann überprüft oder in irgendeiner Weise verwendet werden.

VOID Example_GetBlend(HDC hdc)
{
   Graphics myGraphics(hdc);

   // Create a linear gradient brush, and set its blend.
   REAL fac[] = {0.0f, 0.4f, 0.6f, 1.0f};
   REAL pos[] = {0.0f, 0.2f, 0.8f, 1.0f};

   LinearGradientBrush linGrBrush(
      Point(0, 0), 
      Point(100, 0),
      Color(255, 255, 0, 0),   // red
      Color(255, 0, 0, 255));  // blue

   linGrBrush.SetBlend(fac, pos, 4);

   // Use the linear gradient brush to fill a rectangle.
   myGraphics.FillRectangle(&linGrBrush, 0, 0, 100, 50);

   // Obtain information about the linear gradient brush.
   INT   blendCount;
   REAL* factors = NULL;
   REAL* positions = NULL;

   blendCount = linGrBrush.GetBlendCount();
   factors = new REAL[blendCount];
   positions = new REAL[blendCount];

   linGrBrush.GetBlend(factors, positions, blendCount);

   for(INT j = 0; j < blendCount; ++j)
   {
      // Inspect or use the value in factors[j].
      // Inspect or use the value in positions[j].
   }
}

Anforderungen

   
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 gdiplusbrush.h (include Gdiplus.h)
Bibliothek Gdiplus.lib
DLL Gdiplus.dll

Weitere Informationen

Pinsel und gefüllte Formen

Füllen von Formen mit einem Farbverlaufpinsel

Füllen einer Form mit einem Farbverlauf

LinearGradientBrush

LinearGradientBrush::GetBlendCount

LinearGradientBrush::SetBlend

Point