Bei dem obigen Beispiel habe ich darauf geachtet, dass das Rechteck, über das sich der Farbverlauf erstreckt, mit dem auszufüllenden Rechteck übereinstimmt. Das ist oft zweckmäßig, aber keineswegs erforderlich. Du kannst auch auch folgendes machen:
Rectangle bereich = Rectangle.Inflate(rechteck, -10, -10); Rectangle gradientBereich = new Rectangle(bereich.Location, new Size(50, 50)); using (LinearGradientBrush pinsel = new LinearGradientBrush (gradientBereich, // Überdeckungsbreich Color.Firebrick, // Farbe im Anfangspunkt Color.LawnGreen, // Farbe im Endpunkt 50.0f) // Verlaufsrichtung ) { g.FillRectangle(pinsel, bereich); }
Der Farbverlauf wird nun wiederholt, um das ganze Rechteck auszufüllen:
Ein Farbverlauf kann auf verschiedene Weise wiederholt werden. Durch die Festlegung eines Wertes für die Eigenschaft WrapMode des LinearGradientBrush bestimmst du, welches Verfahren verwendet wird.
Mit WrapMode.TileFlipX legst du fest, dass der Farbverlauf bei jeder Wiederholung gespiegelt wird:
Rectangle bereich = Rectangle.Inflate(rechteck, -10, -10); Rectangle gradientBereich = new Rectangle(bereich.Location, new Size(50, 50)); using (LinearGradientBrush pinsel = new LinearGradientBrush (gradientBereich, // Überdeckungsbreich Color.Firebrick, // Farbe im Anfangspunkt Color.LawnGreen, // Farbe im Endpunkt 50.0f) // Verlaufsrichtung ) { // Wiederholungsmodus auf "Umkippen" einstellen pinsel.WrapMode = WrapMode.TileFlipX; g.FillRectangle(pinsel, bereich); }
Vergrößere dieses Fenster um zu sehen, dass der Farbverlauf immer so oft als nötig wiederholt wird.